【问题标题】:Implication on memory usage if run JVM without any options?如果在没有任何选项的情况下运行 JVM,对内存使用的影响?
【发布时间】:2017-10-03 20:05:15
【问题描述】:

我们有 64 位 Oracle JRE 8,我们的应用程序开始为:

java -jar C:\path\to\app.jar

在这种情况下JVM如何使用内存(当你没有设置-Xmx和其他选项时)?

【问题讨论】:

  • java -XX:+PrintFlagsFinal -version | grep MaxHeapSize
  • @assylias ~2.1 GiB。有趣...所以默认情况下即使在 64 位机器中最大内存消耗也是有限的...但是对于相同的 JVM 但不同的主机,这个数字会有所不同。
  • 它取决于 JVM(客户端或服务器)和可用内存
  • 注意:最大堆大小不适用于堆外的内存使用。这些 JVM 内存包括 jars、线程堆栈、直接内存、本机内存、JVM 本身、元空间(包括代码)GUI 组件、套接字缓冲区等。不用说,堆可能小于其余的内存使用量。

标签: java performance memory-management jvm jvm-arguments


【解决方案1】:

所以默认情况下,即使在 64 位机器中,最大内存消耗也是有限的……但是对于相同的 JVM 但不同的主机,这个数字会有所不同。

对于 openjdk 和 oracle jvm,这由 MaxRAMFraction 选项控制,在 64 位下默认为 4,即物理内存的 25%。

【讨论】:

  • 注意:这限制了堆的大小,但不限制 JVM 的其余部分。
【解决方案2】:

我记错了,但我知道如果你不指定 -Xmx 或 -Xms,jvm 不会使用超过 25% 的 RAM

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-12
    • 2014-10-26
    • 2013-09-25
    • 2013-03-13
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多