1. 程式人生 > >tomcat記憶體優化及問題排查

tomcat記憶體優化及問題排查

tomcat記憶體錯誤常見的有三種分別:

1. OutOfMemoryError Java heap space(堆記憶體溢位)

  • 在排除應用服務記憶體洩漏的情況下,可以適當增加堆記憶體的大小解決該問題,及設定-Xms -Xmx ,一般不要查過實體記憶體的80%,並且最好兩個值相等;
  • 堆記憶體大小包括年輕代和年老代,同過-Xmn或者-XX:NewSize設定年輕代的大小,-Xmx減去年輕代大小等於老年代大小;
  • 應用程式新建立的物件都分配在年輕代,可以根據實際情況調整年輕代和老年代大小;

2. OutOfMemoryError PermGen space(永久代溢位)

  • 這個區域主要儲存
    CLASS和常量池、欄位描述以及方法描述資訊;
  • 可以加大-XX:PermSize -XX:MaxPermSize 來解決此問題

3. OutOfMemoryError unable to create new native thread.(無法建立新的執行緒)

  • java每個執行緒預設大小為1M
  • 可以建立的執行緒數:(MaxProcessMemory - JVMMemory - ReservedOsMemory / ThreadStackSize = Number of threads
  • MaxProcessMemory:程序最大記憶體數量,32位系統為2G64位跟作業系統記憶體大小有關
  • JVMMemory:分配給JVM的記憶體
  • ReservedOsMemory:用於系統dll載入等,大概用去100+M
  • 所以分配給JVM的記憶體越多,越容易出現“ unable to create new native thread”異常