java的GC编程

关于gc的编程,下面这篇文章写的不错。
http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak2/


做图片缓存的时候确实不错。
在之前一个项目中,由于图片只占用43byte,就一直放在内存中强引用了,所以没有在意GC的事情。
但是精益求精的思路我们应该把SoftReference用上。

自己也弄了个demo

/**
 * natasa develop group
 */
package com.panguso.gc;

import java.lang.ref.WeakReference;

/**
 * @author piaohailin
 * @date 2013-7-6
 */
public class Test {

    /**
     * @param args
     * 
     * @author piaohailin
     * @date 2013-7-6
     */
    public static void main(String[] args) throws Exception {

        Test test = new Test(); // 模拟图片对象
        // 使用该对象

//        SoftReference<Test> sr = new SoftReference<Test>(test);
        WeakReference<Test> sr = new WeakReference<Test>(test);
        test = null;
        System.gc(); //有时候会回收,有时候不会回收

        System.out.println("begin WeakReference");
        
        // 下次使用
        if (sr.get() != null) {
            test = sr.get();
        } else {
            test = new Test();
            sr = new WeakReference<Test>(test);
        }

    }
}

你可能感兴趣的:(java)