1

我想读取这两个值——我总共分配了多少内存,还有多少可用空间(对 JVM 可见,对操作系统不可见)。

4

3 回答 3

3

您可以使用 Runtime.totalMemory() 和 Runtime.freeMemory()。

您可以使用 VisualVM 看到这一点。

注意:空闲内存是未使用的内存,而不是清理垃圾后会释放多少内存。这意味着没有可用的内存,但没有问题,因为只要调用 GC,就会有。

出于这个原因,最好查看 GC 后有多少内存可用。

于 2012-09-14T21:04:02.187 回答
0

您可以使用 VisualVM(或)JConsole 工具。

当您运行这些工具之一时,您将选择您希望查看其使用情况的 java 进程。

如果您使用的是 MBean,您可以使用java.lang:type=Memory

于 2012-09-14T21:03:54.420 回答
0

至少在类 unix 系统上,您可以向程序发送 SIGQUIT以获取 javadump,其中包含有关内存的部分。

An example from the linked page:
MEMINFO subcomponent dump routine
=================================
Bytes of Heap Space Free: 365df8
Bytes of Heap Space Allocated: 400000
于 2012-09-14T21:04:49.283 回答