1. 概述
1.1 版本
Resin 版本 |
---|
Resin4.0.58 及以上 |
1.2 應用場景
Java Servlet 運作於 Web 伺服器中,與 Web 伺服器融為一體運作在同一個 Java 虛擬機(JVM)當中。Web 伺服器載入類需要佔用 JVM 記憶體中的持久代(Perm Generation),Java 應用程式執行報表獲取的資料,運算的中間資料等都需要佔用 JVM 記憶體中的堆(heap),當沒有記憶體可用時,就會出現記憶體上限溢位錯誤:java.lang.OutOfMemoryError:PermGen space 或者 java.lang.OutOfMemoryError:Java heap space。
1.3 功能簡介
本文簡單介紹,修改 Resin 伺服器記憶體等配置項的方法。
注:由於FineReport僅支援部署在 Resin4.0.58 及以上版本,因此本文僅提供該版本以上的相關修改方案,低版本不提供。
2. 修改記憶體
在Resin4版本,管理者透過修改resin.xml檔案更改記憶體配置。建議修改的記憶體配置項包括:
記憶體配置項 | 說明 | 建議值 |
---|---|---|
xmx | 指定Java堆的最大記憶體大小 它設定堆的上限,當堆大小達到該值時,JVM將停止分配新的記憶體並觸發垃圾回收 | 建議 8GB <= Xmx < =32 GB 使用者可在 健康巡檢 查看推薦的「堆內記憶體」大小(Xmx 值) |
xms | 指定Java堆的初始記憶體大小 它設定堆的初始大小,JVM會在啟動時分配該大小的記憶體 | 建議 Xms = Xmx |
MaxPermSize | 指定直接記憶體(Direct Memory)的最大大小 直接記憶體不受Java堆大小的限制,透過本地記憶體直接分配,而不是在Java堆中分配 | 建議 MaxPermSize =1/2 * Xmx |
MaxDirectMemorySize | 堆外NIO記憶體,指定直接記憶體(Direct Memory)的最大大小 直接記憶體不受Java堆大小的限制,透過本地記憶體直接分配,而不是在Java堆中分配 | 建議 2GB |
1)進入%Resin_HOME%\bin目錄,尋找resin.xml檔案。
2)使用正文編輯器開啟resin.xml檔案。在<cluster id="app">標籤內新增以下行來設定:
3)儲存並關閉resin.xml檔案
4)重啟Resin伺服器以使修改生效。