tomcat記憶體優化及問題排查
阿新 • • 發佈:2018-12-12
tomcat記憶體錯誤常見的有三種分別:
1. OutOfMemoryError: Java heap space(堆記憶體溢位)
- 在排除應用服務記憶體洩漏的情況下,可以適當增加堆記憶體的大小解決該問題,及設定-Xms 和-Xmx ,一般不要查過實體記憶體的80%,並且最好兩個值相等;
- 堆記憶體大小包括年輕代和年老代,同過-Xmn或者-XX:NewSize設定年輕代的大小,-Xmx減去年輕代大小等於老年代大小;
- 應用程式新建立的物件都分配在年輕代,可以根據實際情況調整年輕代和老年代大小;
2. OutOfMemoryError: PermGen space(永久代溢位)
- 這個區域主要儲存
- 可以加大-XX:PermSize 和 -XX:MaxPermSize 來解決此問題
3. OutOfMemoryError: unable to create new native thread.(無法建立新的執行緒)
- java每個執行緒預設大小為1M
- 可以建立的執行緒數:(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads
- MaxProcessMemory:程序最大記憶體數量,32位系統為2G,64位跟作業系統記憶體大小有關
- JVMMemory:分配給JVM的記憶體
- ReservedOsMemory:用於系統dll載入等,大概用去100+M
- 所以分配給JVM的記憶體越多,越容易出現“ unable to create new native thread”異常