EclipseでJavaプログラムを実行しているときとコマンドラインから実行しているときにThreadPoolExecutorの動作が異なる理由を調査している間はどうでしょうか。非常に奇妙なOutOfMemoryError(max mem = 256 Mb)をスローするテストを作成しました
class A {
byte[] buf = new byte[150_000_000];
protected void finalize() {
int i = 1;
}
}
A a1 = new A();
a1 = null;
A a2 = new A();
コメントアウトするint i = 1
と、テストが機能します。私が理解している限り、finalize
空の場合、HotSpotは単にそれを無視します。finalize
しかし、1つの実質的に空の呼び出しでGC / JVMを壊すにはどうすればよいでしょうか?