【发布时间】:2023-03-23 13:29:02
【问题描述】:
我想读取这 2 个值——我总共分配了多少内存,还有多少可用空间(对 JVM 可见,对操作系统不可见)。
【问题讨论】:
标签: java garbage-collection jvm heap-memory
我想读取这 2 个值——我总共分配了多少内存,还有多少可用空间(对 JVM 可见,对操作系统不可见)。
【问题讨论】:
标签: java garbage-collection jvm heap-memory
您可以使用 Runtime.totalMemory() 和 Runtime.freeMemory()。
您可以使用 VisualVM 看到这一点。
注意:空闲内存是未使用的内存,而不是清理垃圾后会释放多少内存。这意味着没有可用的内存,但没有问题,因为只要调用 GC,就会有。
因此,最好查看 GC 后有多少内存可用。
【讨论】:
至少在类 unix 系统上,您可以send your program a SIGQUIT 获取 javadump,其中包含有关内存的部分。
An example from the linked page:
MEMINFO subcomponent dump routine
=================================
Bytes of Heap Space Free: 365df8
Bytes of Heap Space Allocated: 400000
【讨论】:
您可以使用 VisualVM(或)JConsole 工具。
当您运行这些工具之一时,您将选择您希望查看其使用情况的 java 进程。
如果您使用的是 MBean,您可以使用 java.lang:type=Memory
【讨论】: