【问题标题】:What is the max setting for heap you can set for the 32 bit Sun Java 6 JVM on 64 bit linux? [duplicate]您可以为 64 位 Linux 上的 32 位 Sun Java 6 JVM 设置的最大堆设置是多少? [复制]
【发布时间】:2012-05-17 17:59:34
【问题描述】:

可能重复:
Maximum Java heap size of a 32-bit JVM on a 64-bit OS

我们有一个运行 32 位 JVM 的 64 位 Linux 服务器。由于各种内部原因,我们不想升级到 64 位 JVM。假设我的操作系统可以使用超过 32 位程序可以使用的方式,那么最大的 -xmx 值是多少?

究竟是 4096 还是有一些填充物必须更低?

【问题讨论】:

    标签: java jvm


    【解决方案1】:

    3788.8 MB 是 64 位 Linux 上 32 位 JVM 的最大堆大小。 来源:http://pauldone.blogspot.com/2008/08/is-jvms-maximum-heap-size-really-17-gb.html (对于较旧的 Java,Java 6 实际上可能或多或少)

    【讨论】:

    • 嗯,第一个谷歌搜索 linux highmen max memory lists thisFor a 32 bit process on a 64 bit kernel (a common case on ppc64 or x86_64) the limit will usually be (4GB - one page).。当内核有 TB 的可用空间时,我看不出为什么内核需要从进程地址空间中保留 1gb 的虚拟内存。
    • @Voo - 请记住,他询问的是堆大小,而不是 JVM 进程的大小。堆大小是 JVM 中运行的 Java 应用程序可用的 RAM 量,因此堆大小不包括 JVM 本身使用的 RAM。
    • 是的,所以我们显然必须减去几百 mb。仍然如您自己的链接所示,64 位操作系统下 32 位进程的可用堆内存肯定大于 3gb(同样的论点也适用于“可以使用 3gb”)。立即为链接 +1。
    • @Voo - 你是正确的,所以我更正了我的答案,感谢您的反馈。
    • 小心使用最大值。堆只是 Java 应用程序使用的内存的一部分。您应该很好地监控,因为 Java 应用程序还需要空间用于线程并在永久代中存储类对象/内部字符串等。还要考虑 GC(但是对于小堆,暂停不应该那么长)在命令上使用 jmap -heap 或使用 jconsole/jvisualvm 来监控最佳大小。还有
    猜你喜欢
    • 2014-03-14
    • 2011-10-29
    • 2011-02-24
    • 2011-01-28
    • 2013-02-12
    • 2014-07-08
    • 2011-03-11
    • 2013-04-09
    • 2012-03-19
    相关资源
    最近更新 更多