欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-13 11:14:58
我们通常使用的jvm都是32位的(64位的jvm会损失10-20%的性能,通常不建议使用),而32位程序的寻址空间应该是4gb才对,为什么linux上的jvm内存只能使用2...

我们通常使用的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左右。

 

上一篇:

下一篇: