下に 2 つの関数があり、1 つは insert() で、もう 1 つは 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 で未使用のメモリ ブロックをすべてガベージ コレクションする方法。
同じことを達成するためのコードサンプル。