详解Linux系统中JVM内存2GB上限

开发 后端
有些用户反映在Linux系统中运行的Java应用,JVM内存只能使用到2GB,在Java虚拟机中如果把-Xmx参数设置到2GB左右(约1.5-1.8GB),Java进程就根本启动不了。本文将弄清楚这原因。

我们通常使用的JVM都是32位的(64位的JVM会损失10-20%的性能,通常不建议使用),而32位程序的寻址空间应该是4GB才对,为什么Linux上的JVM内存只能使用2GB呢?

经过和JDK研发组的人员沟通,终于弄清楚了一些相关的原因。这个问题存在于早期的一些Linux版本中,特别是内核2.5以前的版本,2.6以后的版本就基本上没有这个问题了。原来这些Linux版本对进程有个对内存2GB的限制,是一个地址连续的内存块大小的上限,而JVM的堆空间(heap size)需要连续的地址空间,因此,2GB就是java进程的理论使用的内存上限。

如果java应用需要使用较大的内存,建议使用较新版本的linux,或者修改Linux的应用/内核内存比配置为3GB:1GB。还有就是选择如Solaris等的UNIX操作系统。象Solaris这样的操作系统,在JVM内存管理上没有2GB的限制,因此可以把heap size设置到3.5-3.6GB左右。

【编辑推荐】

  1. 浅谈Sun JVM内存管理及调优
  2. 监视JSP中JVM可用内存
  3. JDK、JRE、JVM之间的关系
  4. 手把手教你删除MS JVM的几种方法
  5. Java虚拟机(JVM)中的内存设置详解
责任编辑:彭凡 来源: 51CTO论坛
相关推荐

2012-03-16 16:22:55

笔记本评测

2009-04-30 08:57:11

微软操作系统Windows 7

2024-08-08 11:49:19

2024-01-26 15:12:59

TCP参数窗口

2020-03-12 08:53:55

内存整数排序

2010-04-28 10:39:25

2020-03-10 18:45:44

微软WindowsWindows XP

2009-08-21 10:40:47

IT产品

2023-02-04 12:32:39

微软Windows 11Tiny11

2022-01-13 15:20:45

Ubuntu内存Linux

2018-04-23 09:08:12

Windows 语言 系统

2019-05-06 08:37:14

JVMLinux内存

2011-05-06 16:47:24

笔记本海尔简爱7G

2024-02-07 11:41:51

大语言模型鸿蒙alpaca模型

2010-09-25 12:38:40

JVM内存模型

2010-09-27 13:48:41

JVM内存结构

2009-03-16 09:28:35

黑客断指U盘

2022-01-13 10:11:00

Ubuntu树莓派硬件门槛

2010-09-26 13:23:13

JVM内存管理机制

2009-06-04 16:27:39

Java虚拟机JVMGC
点赞
收藏

51CTO技术栈公众号