【问题标题】:What does Java option -Xmx stand for? [duplicate]Java 选项 -Xmx 代表什么? [复制]
【发布时间】:2011-07-19 11:15:28
【问题描述】:

java -Xmx1024m filename

-Xmx 是什么意思?

【问题讨论】:

  • 顺便说一句:以-X 开头的选项跨平台是非标准的,将来可能会被删除。现在有一个-mx,它是标准的、更短的并且做同样的事情,但是文档很少。 :( 同样有-mx 而不是-Xms
  • 为什么是“mx”?我们到底是怎么得到堆大小的“m”和最大值的“x”?至少“开始”的“s”是有意义的。
  • @PatrickMcElhaney 似乎是一个不错的选择,“m”代表“memory”,而“x”代表“max”,因为您不能使用“m”(对于“max”和“min”——使用最后一个字符让“x”成为“max”,“n”成为“min”)。

标签: java


【解决方案1】:

看这里:Java Tool Doc,上面写着,

-Xmxn
指定内存分配池的最大大小(以字节为单位)。此值必须是大于 2MB 的 1024 的倍数。附加字母 k 或 K 表示千字节,或附加字母 m 或 M 表示兆字节。默认值为 64MB。此值的上限在 Solaris 7 和 Solaris 8 SPARC 平台上约为 4000m,在 Solaris 2.6 和 x86 平台上约为 2000m,减去开销。例子:

           -Xmx83886080
           -Xmx81920k
           -Xmx80m

因此,简单来说,您将 Java 堆内存设置为可用内存的最大 1024 MB,而不是更多。

注意 -Xmx 和 1024m 之间有 NO SPACE

使用大写或小写都没有关系。例如:“-Xmx10G”和“-Xmx10g”做同样的事情。

【讨论】:

【解决方案2】:
C:\java -X

    -Xmixed           mixed mode execution (default)
    -Xint             interpreted mode execution only
    -Xbootclasspath:<directories and zip/jar files separated by ;>
                      set search path for bootstrap classes and resources
    -Xbootclasspath/a:<directories and zip/jar files separated by ;>
                      append to end of bootstrap class path
    -Xbootclasspath/p:<directories and zip/jar files separated by ;>
                      prepend in front of bootstrap class path
    -Xnoclassgc       disable class garbage collection
    -Xincgc           enable incremental garbage collection
    -Xloggc:<file>    log GC status to a file with time stamps
    -Xbatch           disable background compilation
    -Xms<size>        set initial Java heap size
    -Xmx<size>        set maximum Java heap size
    -Xss<size>        set java thread stack size
    -Xprof            output cpu profiling data
    -Xfuture          enable strictest checks, anticipating future default
    -Xrs              reduce use of OS signals by Java/VM (see documentation)
    -Xcheck:jni       perform additional checks for JNI functions
    -Xshare:off       do not attempt to use shared class data
    -Xshare:auto      use shared class data if possible (default)
    -Xshare:on        require using shared class data, otherwise fail.

The -X options are non-standard and subject to change without notice.

【讨论】:

  • 人们应该真正开始阅读精美的手册......谢谢!
  • 是的,这 1 行描述绝对详尽,涵盖了所有内容。这就是为什么没有人需要 StackOverflow。如果他们让您对单个参数提供帮助并更详细地查看设置这些参数的含义,那么可能还不错,因此命令参数的手册页等。
【解决方案3】:

-Xmx 选项更改 VM 的最大堆空间。 java -Xmx1024m 表示VM最多可以分配1024MB。通俗地说,这意味着应用程序最多可以使用 1024MB 的内存。

【讨论】:

  • 谢谢..但是当我运行这个命令时,我得到了这些错误...... 1)无效的最大堆大小:-Xmx 和 2)无法创建 java 虚拟机你能帮我吗
  • 你需要删除 -Xmx 和大小之间的空格(写这个:java -Xmx1024m。不是这个:java -Xmx 1024m)
  • 请注意,您的应用程序可能仍会使用更多内存,因为您需要包含 VM 开销,这就是为什么当您希望将 java 放入 cgroup 内存限制内时会很棘手
  • 我不同意这一点。 -Xmx 是唯一的堆大小,因此从技术上讲,java 进程可以占用比 -Xmx 更多的内存。我们没有考虑本地堆栈和 VM 开销。
  • 请看下面的文章。 -Xmx 设置仅适用于堆大小,不适用于整个 java 进程。 plumbr.io/blog/memory-leaks/…
【解决方案4】:

应用程序的最大堆使用量为 1024 MB

【讨论】:

    【解决方案5】:

    -Xmx 设置最大堆大小

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 2020-02-25
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 2011-07-10
      相关资源
      最近更新 更多