Javaのローカルダイレクト・メモリ・オーバーフロー

-XXによってDirectMemory容量:DirectByteBufferメモリメモリオーバーフローを割り当てる使用すると、例外がスローされますが、例外がスローされたとき、それは本当に、オペレーティング・システムの割り当てには適用されませんがMaxDirectMemorySizeは、指定されていない場合、デフォルトは最大Javaヒープと同じであり、指定メモリが、メモリを手動次いで、その演算によって割り当てることができない例外をスローし、実際のアプリケーションでは、(メモリアプローチはunsafe.allocateMemoryで割り当て)
ここで、テストコードです。

public class DirectMemoryOOM{
	private static final int_1MB = 1024 * 1024;
	public static void main(String[] args) throws Exception{
		Field unsafeField = Unsafe.class.getDeclaredFields()[0];
		unsafeField.setAccessible(true);
		Unsafe unsafe = (Unsafe) unsafeField.get(null);
		while(true){
			unsafe.allocateMemory(_1MB);
		}
	}
}

実行時エラー:

Excepiton in thead "main" java.lang.OutOfMemoryError

おすすめ

転載: blog.csdn.net/fight252/article/details/91351098