Linux系统中JVM内存2GB的限制

有些用户反映在Linux系统中运行的Java应用,内存只能使用到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,JavaFX,Solaris 技术交流 http://developers.sun.com.cn/blog/henry/ )

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值