我正在阅读有关弱引用的信息。
我正在使用代码从这里学习。这很简单。
private void doFunction() throws InterruptedException {
Map<Integer, String> map = new HashMap<Integer, String>();
myMap = new WeakReference<Map<Integer, String>>(map);
map = null;
int i = 0;
while (true) {
if (myMap != null && myMap.get() != null) {
myMap.get().put(i++, "test" + i);
System.out.println("im still working!!!!");
}
else {
System.out.println("*******im free at:"+i+"*******");
Thread.sleep(5000);
if(myMap != null){
System.out.println("*******myMap is not null*******");
}
}
}
我没有通过请求小堆大小或任何大小,–Xms and –Xmx
但能够看到从缓存中删除的值i == 15312
。
所以在GC15312
中的对象Map
开始删除条目之后。我的问题:对于内存来说
是不是15312
太低了?在开始删除引用之前,我期待更高的价值。
我错了吗?如何评估对象将在哪些点开始被移除? 32 bit machine
4 GB