Я хотел бы узнать то, что является общим размером "кучи", который используется в определенное время процессом Java, и я должен использовать jmap.
Вывод jmap -heap <pid>
дает мне что-то вроде этого:
Attaching to process ID 2899, please wait... Debugger attached successfully. Server compiler detected. JVM version is 14.2-b01 using thread-local object allocation. Parallel GC with 2 thread(s) Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 1258291200 (1200.0MB) NewSize = 1048576 (1.0MB) MaxNewSize = 4294901760 (4095.9375MB) OldSize = 4194304 (4.0MB) NewRatio = 8 SurvivorRatio = 8 PermSize = 16777216 (16.0MB) MaxPermSize = 67108864 (64.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 119013376 (113.5MB) used = 117277608 (111.84464263916016MB) free = 1735768 (1.6553573608398438MB) 98.54153536489882% used From Space: capacity = 131072 (0.125MB) used = 81920 (0.078125MB) free = 49152 (0.046875MB) 62.5% used To Space: capacity = 131072 (0.125MB) used = 0 (0.0MB) free = 131072 (0.125MB) 0.0% used PS Old Generation capacity = 954466304 (910.25MB) used = 80791792 (77.04905700683594MB) free = 873674512 (833.2009429931641MB) 8.46460390077846% used PS Perm Generation capacity = 57671680 (55.0MB) used = 41699008 (39.76727294921875MB) free = 15972672 (15.23272705078125MB) 72.30413263494319% used
Я могу использовать формулу для этих значений для обнаружения используемой общей памяти?
Другие предложения о том, как я могу узнать это на Linux, приветствуются, но jmap предпочтен по ним.
Спасибо
Записи в разделе Использование кучи:
перечисляют различные пулы многораздельной памяти в JVM вместе с их максимальным размером, используемым и свободным пространством. Вы можете просто сложить различные значения used:
, которые должны дать вам разумное значение для общего использования памяти, хотя могут быть некоторые накладные расходы JVM, которые не учтены в перечисленных пулах.
если вы пытаетесь сравнить с чем-то вроде jconsole или jvisualvm, где в главном окне отображается 'total heap usage', я обнаружил, что, добавив 'used eden space' и 'used ps old generation space', я получил эквивалент того, что показывает этот график в вышеупомянутых программах - это то, на что я склонен ориентироваться сейчас
.