java - 使用 jmap 查找当前堆大小

标签 java linux memory jmap

我想知道某个时间 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比他们更受欢迎。

谢谢

最佳答案

如果您尝试与显示“总堆使用量”的主窗口比较像 jconsolejvisualvm 之类的东西,我发现通过添加“已用伊甸园空间”和 'used ps old generation space' 我得到了与前面提到的程序中的图表相同的内容——这就是我现在倾向于继续的内容。

关于java - 使用 jmap 查找当前堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2324552/

相关文章:

linux - 当实用程序 w3m 的进程运行时,脚本有时会阻塞

c++ - 在 map::at() 中内存字符串表示差异抛出错误

c - numa_alloc_onnode() 分配的内存多于它所能分配的内存吗?

java - 在 Java 中使用线程的并行素数检查器

java - 我试图使用 while 循环重复 if 语句,但它一直卡住

linux - CentOS 中的存储库是什么?

c++ - 将字节从较小的类型复制到较大的类型

java - Spring - 使用 java 配置为 xml 配置 Jboss Intros?

java - 如何使用 jni 构建项目,而无需构建过程重新创建 header ?

c - C程序中Linux系统调用的输出