我想知道一个Java进程在某个特定时间使用的总堆大小,我必须使用jmap。
jmap -heap <pID>的输出给了我这样的东西:
附加到进程ID 2899,请稍候…
deBUGging器成功连接。
检测到服务器编译
JVM版本是14.2-b01
使用线程局部对象分配。
2线程并行GC
堆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)
堆用法:
PS年轻一代
伊甸园空间:
容量= 119013376(113.5MB)
used = 117277608(111.84464263916016MB)
免费= 1735768(1.6553573608398438MB)
使用98.54153536489882%
从空间:
容量= 131072(0.125MB)
used = 81920(0.078125MB)
免费= 49152(0.046875MB)
62.5%使用
到太空:
容量= 131072(0.125MB)
used = 0(0.0MB)
免费= 131072(0.125MB)
0.0%使用
PS老一代
容量= 954466304(910.25MB)
used = 80791792(77.04905700683594MB)
免费= 873674512(833.2009429931641MB)
使用了8.46460390077846%
PS烫发一代
容量= 57671680(55.0MB)
used = 41699008(39.76727294921875MB)
免费= 15972672(15.23272705078125MB)
使用72.30413263494319%
我可以使用这些值的公式来找出使用的总内存?
关于如何在linux上发现这个问题的其他build议值得欢迎,但jmap优先于它们。
如何使用windows cmd获得全部物理内存?
在windows上检测进程内存注入(防黑客)
移动内存页面比mremap()更快的方法?
CUDA内存错误
内存映射文件可选写入可能吗?
谢谢
从用户空间连续的物理内存
VirtualAlloc失败
linux:手动减less堆大小
从正在运行的Java程序的内存中查找并读取特定types的对象
在两个进程(C,windows)之间共享内存
如果你想比较像jconsole或jvisualvm与主窗口显示“总堆使用情况”我发现通过添加“使用的伊甸园空间”和“使用PS老一代空间”我得到了相同的图表显示在上述的程序中 – 这是我现在倾向于去做的
“ Heap Usage: ”下的条目列出了JVM中的各种分区内存池以及最大大小,已用空间和可用空间。 您可以将所used:的各种值加起来,这些值应该为总的内存使用情况提供一个合理的值,尽管在列出的池中可能存在一些JVM开销。
总结
以上是内存溢出为你收集整理的用jmap查找当前的堆大小全部内容,希望文章能够帮你解决用jmap查找当前的堆大小所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容