1. 程式人生 > >有關JVM永生代記憶體溢位的一個解決方案

有關JVM永生代記憶體溢位的一個解決方案

1. 錯誤提出

1.今天在跑Oracle查詢時,控制檯視窗輸出瞭如下的資訊:

java.lang.OutOfMemoryError: PermGen space

2. 解決方案

由於 JDK 自帶的虛擬機器為 HotSpot,且其支援記憶體區域的動態擴充套件,因此可以通過設定虛擬機器引數來擴充套件方法區的記憶體大小。例如,進入Run/Debug Configuration頁面,修改虛擬機器引數為:

-Xms1024M -Xmx2048M -XX:PermSize=128M -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError

使用的時普元的EOS開發環境

其中,各個引數的含義為:

-Xms,表示程式啟動時,JVM 堆的初始化最小尺寸引數;
-Xmx,表示程式啟動時,JVM 堆的初始化最大尺寸引數;
-XX:PermSize,表示程式啟動時,JVM 方法區的初始化最小尺寸引數;
-XX:MaxPermSize,表示程式啟動時,JVM 方法區的初始化最大尺寸引數。
-XX:+HeapDumpOnOutOfMemoryError可以讓JVM在出現記憶體溢位時候Dump出當前的記憶體轉儲快照。