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">标签内添加以下行来设置:
<server-default>
<jvm-arg>-Xms8192m</jvm-arg>
<jvm-arg>-Xmx8192m</jvm-arg>
<jvm-arg>-XX:MaxPermSize=2096m</jvm-arg>
<jvm-arg>-XX:MaxDirectMemorySize=2048m</jvm-arg>
</server-default>
3)保存并关闭resin.xml文件
4)重启Resin服务器以使修改生效。