我有以下两个函数,一个是 insert(),另一个是 startGC()。
我将首先调用 insert() 方法,这将占用大约 300MB 的堆空间。之后我将调用 startGC() ,它应该释放在堆中分配的内存,因为所有向量对象都是函数本地的,但它没有发生。
private void insert()
{
Vector v=new Vector();
Vector v1=new Vector();
Vector v2=new Vector();
String str="Hello";
for (long i = 0L; i < 999999L; i++) {
v.add(str + i);
v1.add(str + i);
v2.add(str + i);
}
v=null;
v1=null;
v2=null;
}
private void startGC()
{
System.gc();
}
我的问题:
1)为什么垃圾收集在这个例子中不起作用。
2)如何让JVM垃圾收集所有未使用的内存块。
任何实现相同的代码示例。