Java常è§çå ç§å
å溢åºå解å³æ¹æ³ãæ
åµä¸ãï¼
java.lang.OutOfMemoryError:Javaheapspaceï¼è¿ç§æ¯javaå å
åä¸å¤ï¼ä¸ä¸ªåå æ¯çä¸å¤ï¼å¦éå½çå±æ°å¤ªå¤çï¼ï¼å¦ä¸ä¸ªåå æ¯ç¨åºä¸ææ»å¾ªç¯ï¼
å¦ææ¯javaå å
åä¸å¤çè¯ï¼å¯ä»¥éè¿è°æ´JVMä¸é¢çé
ç½®æ¥è§£å³ï¼
-Xms3062m
-Xmx3062m
ãæ
åµäºã
java.lang.OutOfMemoryError:GCoverheadlimitexceeded
ã解éãï¼JDK6æ°å¢é误类åï¼å½GC为éæ¾å¾å°ç©ºé´å ç¨å¤§éæ¶é´æ¶æåºï¼ä¸è¬æ¯å 为å 太å°ï¼å¯¼è´å¼å¸¸çåå ï¼æ²¡æ足å¤çå
åã
ã解å³æ¹æ¡ãï¼
1ãæ¥çç³»ç»æ¯å¦æ使ç¨å¤§å
åç代ç ææ»å¾ªç¯ï¼
2ãéè¿æ·»å JVMé
ç½®ï¼æ¥éå¶ä½¿ç¨å
åï¼
-XX:-UseGCOverheadLimit
ãæ
åµä¸ãï¼
java.lang.OutOfMemoryError:PermGenspaceï¼è¿ç§æ¯Påºå
åä¸å¤ï¼å¯éè¿è°æ´JVMçé
ç½®ï¼
-XX:MaxPermSize=128m
-XXermSize=128m
ã注ãï¼
JVMçPermåºä¸»è¦ç¨äºåæ¾ClassåMetaä¿¡æ¯ç,Classå¨è¢«Loaderæ¶å°±ä¼è¢«æ¾å°PermGenspaceï¼è¿ä¸ªåºåæ为年è代ï¼GCå¨ä¸»ç¨åºè¿è¡æé´ä¸ä¼å¯¹å¹´èåºè¿è¡æ¸
çï¼é»è®¤æ¯64M大å°ï¼å½ç¨åºéè¦å è½½ç对象æ¯è¾å¤æ¶ï¼è¶
è¿64Må°±ä¼æ¥è¿é¨åå
å溢åºäºï¼éè¦å 大å
ååé
ï¼ä¸è¬128m足å¤ã
ãæ
åµåãï¼
java.lang.OutOfMemoryError:Directbuffermemory
è°æ´-XX:MaxDirectMemorySize=åæ°ï¼å¦æ·»å JVMé
ç½®ï¼
-XX:MaxDirectMemorySize=128m
ãæ
åµäºãï¼
java.lang.OutOfMemoryError:unabletocreatenewnativethread
ãåå ãï¼Stack空é´ä¸è¶³ä»¥å建é¢å¤ç线ç¨ï¼è¦ä¹æ¯å建ç线ç¨è¿å¤ï¼è¦ä¹æ¯Stack空é´ç¡®å®å°äºã
ã解å³ãï¼ç±äºJVM没ææä¾åæ°è®¾ç½®æ»çstack空é´å¤§å°ï¼ä½å¯ä»¥è®¾ç½®å个线ç¨æ ç大å°ï¼èç³»ç»çç¨æ·ç©ºé´ä¸å
±æ¯3Gï¼é¤äºText/Data/BSS/MemoryMappingå 个段ä¹å¤ï¼HeapåStack空é´çæ»éæéï¼æ¯æ¤æ¶å½¼é¿çãå æ¤éå°è¿ä¸ªé误ï¼å¯ä»¥éè¿ä¸¤ä¸ªéå¾è§£å³ï¼1.éè¿-Xsså¯å¨åæ°åå°å个线ç¨æ 大å°ï¼è¿æ ·ä¾¿è½å¼æ´å¤çº¿ç¨ï¼å½ç¶ä¸è½å¤ªå°ï¼å¤ªå°ä¼åºç°StackOverflowErrorï¼ï¼2.éè¿-Xms-Xmx两åæ°åå°Heap大å°ï¼å°å
å让ç»Stackï¼åææ¯ä¿è¯Heap空é´å¤ç¨ï¼ã
ãæ
åµå
ãï¼
java.lang.StackOverflowError
ãåå ãï¼è¿ä¹å
å溢åºé误çä¸ç§ï¼å³çº¿ç¨æ ç溢åºï¼è¦ä¹æ¯æ¹æ³è°ç¨å±æ¬¡è¿å¤ï¼æ¯å¦åå¨æ ééå½è°ç¨ï¼ï¼è¦ä¹æ¯çº¿ç¨æ 太å°ã
ã解å³ãï¼ä¼åç¨åºè®¾è®¡ï¼åå°æ¹æ³è°ç¨å±æ¬¡ï¼è°æ´-Xssåæ°å¢å 线ç¨æ 大å°ã
温馨提示:答案为网友推荐,仅供参考