JVM内存设置后TOMCAT无法启动

damao
  • 423

linux服务器内存大小8G,通过top命令查看可知,当前系统其它进程占用了1G内存。当我设置Xmx为3600M时可正常启动,但是3700M时就无法启动了,依次试过4000M,都不行,报错代码如下,下面三种错误都有报过:

Error occurred during initialization of VM·
Could not reserve enough space for object heap
Could not create the Java virtual machine. 

不知道这个问题如何理解,求高手解答。理论上来说,就算JDK是32位的,应该也能支持4G内存大小

回复
阅读 5.1k
2 个回答

Oracle 官方文档:
The maximum theoretical heap limit for the 32-bit JVM is 4G. Due to various additional constraints such as available swap, kernel address space usage, memory fragmentation, and VM overhead, in practice the limit can be much lower. On most modern 32-bit Windows systems the maximum heap size will range from 1.4G to 1.6G. On 32-bit Solaris kernels the address space is limited to 2G. On 64-bit operating systems running the 32-bit VM, the max heap size can be higher, approaching 4G on many Solaris systems.


帮你翻译一下吧:
理论上,32位的Java虚拟机的Heap(堆)的上限是4G,然而由于其他各种限制,比如可用的交换区,内核地址空间使用,内存碎片和VM overhead(JVM的开销?栈?)等,实际上这个上限可能远小于理论值。在大多数32位的Windows系统上,实际值从1.4G到1.6G不等。在32位的Solaris内核中,地址空间限定到2G。在64位操作系统上运行32位Java虚拟机,该值可能要高一些,比如在很多Solaris系统上就接近4G。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏