давление памяти Java - PullRequest
       23

давление памяти Java

3 голосов
/ 06 сентября 2011

Есть ли в Java функции, позволяющие сообщить среде выполнения о неуправляемом распределении памяти, например метод GC.AddMemoryPressure в .NET ?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2011

Прямая память управляется отдельно в Java и может рассматриваться как «неуправляемая».В JVM Sun / Oracle она имеет свой собственный предел использования памяти, и вы можете одновременно достичь предела размера кучи и прямого объема памяти.

В JVM Sun / Oracle вы можете явно освободить прямую памятьзаблокировать с помощью внутреннего API.В редких случаях вам даже нужно это делать, но вот как

ByteBuffer bb = ByteBuffer.allocateDirect(1024*1024);

((DirectBuffer) bb).cleaner().clean();

Вы можете сделать это десять тысяч раз, не вызывая GC.количество кучи и не считается до прямого предела памяти.Сумма, которую вы можете отобразить, практически не ограничена.(Хотя ограничено 2 ГБ в одном MappedByteBuffer)

2 голосов
/ 06 сентября 2011

Я думаю, это не требуется в Java. 'Если небольшой управляемый объект выделяет большой объем неуправляемой памяти' может просто не произойти в Java, если вы вызываете собственные (неуправляемые) функции через JNI, память не назначается таблице управляемой памяти JVM.

Для справки:

...