首先了解一下參數的含義:
參數 | 含義 |
---|---|
-Xms2G -Xmx2G | 代表jvm可用的heap內存最小和最大 |
-XX:PermSize -XX:MaxPermSize | 代表jvm的metadata內存的大小 |
解決問題:
-
eclipse啟動報的錯是:
Could not reserve enough space for object heap error
當前的配置是:-Xms512M -Xmx1024M -XX:PermSize 512M
-
很多SO的答案是推薦使用JAVA_OPTION變量, 但有一個答案說的原因是:windows 7的32位進程獲取不了超過1200M的內存,這個答案覺得有點靠譜就去試了試。
-
下載安裝64bit的JDK,然后啟動果然沒有報錯。
附錄:
-
換成64位JDK的時候,發現jrebel不行了。搜了好久,官方論壇上給的一個答案是備份jrebel32.dll,然后將64位的jrebel64.dll改成jrebel32.dll. 試了可行.
-
jvm out of memroy 報錯總結:
- Java heap space: 增加-xmx
- PermGen space: 增加-XX:PermSize
- Requested array size exceeds VM limit: 錯誤的意思是創建數組的大小超過了heap的最大大小,所以解決辦法就是,要么增加-xmx,要么減小要創建的這個數組大小。