在本地启动应用的时候程序报错:
1 | Error occurred during initialization of VM |
很明显这个说的是“在初始化虚拟机的时候发生了错误,无法预留2097152KB的堆内存空间”。问题是我的内存还剩很多,再分配2g也完全够了。
同样的问题只发生在我的身上,在同事上运行同样的程序完全没有问题。这让我不禁怀疑到可能是我的环境问题。于是抱着一丝希望,使用了“重启”大法。
没想到!还是不行,呵呵。
后来再网上搜索到,只有windows才有这个问题。jvm会要求分配一段连续的内存,不连续的内存就不要,如果windows提供不了的话,就会爆这个错。但是我重启之后,马上运行java程序也不行,那可能就不是这个原因。
再搜索了一下后,发现别人说如果使用的是32位的jdk,那么最多可以使用的内存是1.8GB。官方推荐的32位使用1.5GB就好了。而我启动的java程序中加了-Xmx2048m -Xms2048m
这个参数。
所以最后的解决方案是:将jdk切换成64位的就好了。
如何判断自己的jdk是否为64位呢?在控制台中执行一下命令,如果没报错,就是64位。
1 | java -d64 -version |
备注:该检测方法只适用于jdk1.7或者jdk1.8。