【问题标题】:How to read heap size -- occupied and free?如何读取堆大小——占用和空闲?
【发布时间】:2023-03-23 13:29:02
【问题描述】:

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

【问题讨论】:

    标签: java garbage-collection jvm heap-memory


    【解决方案1】:

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

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

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

    因此,最好查看 GC 后有多少内存可用。

    【讨论】:

    • 完美!非常感谢。
    【解决方案2】:

    至少在类 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
    

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-06-07
        • 2010-09-10
        • 1970-01-01
        • 2013-12-29
        • 1970-01-01
        • 2021-02-27
        • 2012-07-06
        • 1970-01-01
        • 2011-12-10
        相关资源
        最近更新 更多