【问题标题】:How to programmatically check the amount of RAM allocated to a JVM? [duplicate]如何以编程方式检查分配给 JVM 的 RAM 量? [复制]
【发布时间】:2016-04-14 13:46:08
【问题描述】:

假设我有一个专门用于运行一个程序的 JVM,我如何才能获得分配给 JVM 的 RAM 量?

假设我的计算机有 4GB,我通过 JVM 参数指定它应该使用的最大值是 2GB,那么 2GB 是我应该得到的输出。

相反,如果我不给JVM指定任何参数,输出应该是默认值,不管它是什么。

【问题讨论】:

    标签: java jvm


    【解决方案1】:
    long maxMemory = Runtime.getRuntime().maxMemory();
    

    这是 JVM 可以分配的最大内存量,以字节为单位。

    有关该方法的详细信息,请参见以下链接: https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#maxMemory()

    【讨论】:

    • 注意:这是当时的最大堆大小。实际使用的堆可能会更少,甚至最大可用堆也可能根据幸存者空间的大小而变化(因为您一次只能使用两个幸存者空间之一)实际内存使用量更大是程序/代码、perm gen/metaspace 线程、直接内存等的非堆内存。
    • 没错。扩展那些碰巧遇到这个问题的人:这个解决方案将告诉 JVM 可以分配多少堆,但不会告诉 Windows 为进程分配了多少物理和/或虚拟内存。例如。我有 4GB 的maxMemory(),但由于通过 javacpp 使用 C++ 代码,Windows 中的进程峰值约为 11GB。
    猜你喜欢
    • 1970-01-01
    • 2021-07-13
    • 2017-08-19
    • 1970-01-01
    • 2011-04-05
    • 2017-05-06
    • 2011-12-10
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多