关于gc的编程,下面这篇文章写的不错。
http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak2/
做图片缓存的时候确实不错。
在之前一个项目中,由于图片只占用43byte,就一直放在内存中强引用了,所以没有在意GC的事情。
但是精益求精的思路我们应该把SoftReference用上。
自己也弄了个demo
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);
}
}
}