@echo off if "%OS%" == "Windows_NT" setlocal set CATALINA_HOME=D:\Tomcat5_websearch set HEAP=-Xms4096m -Xmx4096m set PERMANENT_G=-XX:PermSize=128m -XX:MaxPermSize=128m set YOUNG_G=-Xmn600m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5 set CMS_GC=-XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=15 set NEW_GC=-XX:+UseParNewGC -XX:ParallelGCThreads=4 set RMIGC=-Dsun.rmi.dgc.server.gcInterval=86400000 -Dsun.rmi.dgc.client.gcInterval=86400000 set DUMP=-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%CATALINA_HOME%/logs/dump_tomcat.hprof set GCLOG=-Xloggc:%CATALINA_HOME%/logs/gc_tomcat.log -XX:+PrintGCTimeStamps set JAVA_OPTS=-server %HEAP% %PERMANENT_G% %YOUNG_G% %CMS_GC% %NEW_GC% %RMIGC% %DUMP% %GCLOG%
这是tomcat下面catalina.bat
(1) Tomcat中的设置
检查<Tomcat安装目录>/bin 下的 catalina.bat(Windows平台)或catalina.sh(Linux平台)中的 JAVA_OPTS参数是否设置了 –Dfile.encoding=GBK,若没有则需要在该文件中加上一行。
Windows平台:set JAVA_OPTS=%JAVA_OPTS% –Dfile.encoding=GBK
Linux平台: JAVA_OPTS="$JAVA_OPTS –Dfile.encoding=GBK"
“添加:-Djava.net.preferIPv4Stack=true
tomcat 的bin 目录下
linux 系统则修改catalina.sh文件
window 则修改 catalina.bat文件 ”
(2) Weblogic中的设置
应用服务器为Weblogic,要在 Weblogic目录 /user_projects/domains/mydomain下面的 startWebLogic.sh 文件中,JAVA_HOME = “ ” 下面一行增加:
JAVA_OPTIONS= "${JAVA_OPTIONS} -Dfile.encoding=GBK"
然后重启Weblogic即可。
参数设置放在上面这个位置,这是我们系统的配置
//jvm最大可用内存
set HEAP=-Xms4096m -Xmx4096m
//这里是对老年代内存的配置
set PERMANENT_G=-XX:PermSize=128m -XX:MaxPermSize=128m
实现指定获取IPv4的地址-Djava.net.preferIPv4Stack=true
Xms 是指设定程序启动时占用内存大小,表现JVM Heap(堆内存)最小尺寸
Xmx 是指设定程序运行期间最大可占用的内存大小,表现JVM Heap(堆内存)最大容许的尺寸
Xss 是指设定每个线程的堆栈大小
以上三个参数的设置都是默认以Byte 为单位的,也可以在数字后面添加 [k/K]或者[m/M]来表示KB 或者MB
-XX:PermSize=64MB设置最大非堆内存大小。(默认是物理内存的1/64)
-XX:MaxPermSize=256MB设置最大非堆内存大小。(默认是物理内存的1/4)
MaxPermSize缺省值和-server -client选项相干。
-server选项下默认MaxPermSize为64m
-client选项下默认MaxPermSize为32m
堆溢出 OutOfMemoryError:Heap space。
需要调整 –Xms和-Xmx的大小。
永久保存区域溢出 OutOfMemoryError:PermGen space。
需要调整permsize和MaxPermSize的大小。
//这里是对新生代内存的配置
-Xmn的heap大小
-XX:SurvivorRatio年轻代中Eden区与两个Survivor区的比值,8表示Eden:Survivor=8:2,,一个Survivor区占整个年轻代的1/10
-XX:MaxTenuringThreshold 设置垃圾最大年龄 如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,
set YOUNG_G=-Xmn600m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=5
// 这里是对老生代采用并发标记收集器进行垃圾回收的配置 CMS_GC:ConcurrentMarkSweep 并发标记扫描收集器
+UseConcMarkSweepGC 对老生代采用并发标记交换算法进行GC
+DisableExplicitGC 禁止调用System.gc();但jvm的gc仍然有效
+CMSParallelRemarkEnabled 在使用 UseParNewGC 的情况下 , 尽量减少 mark 的时间
+UseCMSCompactAtFullCollection 打开对年老代的压缩。可能会影响性能,但是可以消除碎片
CMSFullGCsBeforeCompaction=15 这里设置15次Full GC后,对年老代进行压缩
CMS:ConcurrentMarkSweep 并发标记扫描
set CMS_GC=-XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=15
// 这里是对新生代采用并行收集器进行垃圾回收的配置 parallel collector 并行收集器
+UseParNewGC 指定新生代使用parallel collector
ParallelGCThreads 线程数
set NEW_GC=-XX:+UseParNewGC -XX:ParallelGCThreads=4
// 这里是对RMI客户端和服务端的垃圾回收的间隔时间设置
Dsun.rmi.dgc.server.gcInterval 设置rmi的gc间隔时间,默认是每分钟进行一次gc,86400000是24小时gc一次
set RMIGC=-Dsun.rmi.dgc.server.gcInterval=86400000 -Dsun.rmi.dgc.client.gcInterval=86400000
// 这里是对当首次遭遇OOM时导出此时堆中相关信息的配置
HeapDumpOnOutOfMemoryError 当首次遭遇OOM时导出此时堆中相关信息
HeapDumpPath 指定导出堆信息时的路径或文件名
set DUMP=-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%CATALINA_HOME%/logs/dump_tomcat.hprof
// 这里是对tomcat垃圾回收日志的配置
set GCLOG=-Xloggc:%CATALINA_HOME%/logs/gc_tomcat.log -XX:+PrintGCTimeStamps
//把以上配置的参数全部设置进去
set JAVA_OPTS=-server %HEAP% %PERMANENT_G% %YOUNG_G% %CMS_GC% %NEW_GC% %RMIGC% %DUMP% %GCLOG%
相关推荐
【标题】:“Tomcat 8.5.56 X64 NIO2模式性能优化版+垃圾处理机制.zip”指的是一个特别针对Windows x64平台优化的Tomcat 8.5.56版本,该版本集成了NIO2(非阻塞I/O)模式,并对垃圾收集(Garbage Collection, GC)...
2. 手动回收垃圾:可以使用 `System.gc()` 方法来手动回收垃圾。 3. 及时释放资源:及时释放内存、数据库连接等资源,以避免内存泄露。 其他解决方法 1. 使用 Java 提供的垃圾回收机制:Java 提供了多种垃圾回收...
通过监控GC(Garbage Collection)活动,调整这些参数可以避免OutOfMemoryError并提升性能。 2. **WebLogic内存设置**:WebLogic的内存优化同样基于JVM参数。除了堆大小,还需要考虑永久代(PermGen或Metaspace,取...
GC(Garbage Collection)不会在主程序运行期对 PermGen space 进行清理,这意味着如果应用程序加载了很多 Class,那么 PermGen space 就可能会溢出,导致 OutOfMemoryError。 解决 PermGen space 问题的方法: 1....
JVM的关键特性包括垃圾回收(Garbage Collection,GC)、类加载机制、内存管理以及性能优化等。 1. **垃圾回收**:JVM自动管理内存,当对象不再被引用时,会进行垃圾回收,释放内存空间。不同的JVM版本提供了不同的...
- **GC (Garbage Collection)**: 可以通过 `System.gc()` 或 `Runtime.getRuntime().gc()` 请求 JVM 执行垃圾回收,但具体执行时间取决于 JVM。 #### 四、Java 应用程序打包 ##### 4.1 打包工具 - **jar.exe**: ...
熟悉JVM内部工作原理,了解类加载器(class loaders)、类反射机制(class reflection)和垃圾回收(garbage collection),掌握如何优化性能和资源管理。 #### 4. GUI与Swing/AWT/SWT应用开发 学习Java桌面应用...
了解JVM的工作原理,包括类加载器(Class Loaders)、类的反射机制(Class Reflection)、垃圾回收(Garbage Collection)机制。掌握如何优化JVM性能,识别和解决内存泄漏问题。 ### 4. 图形用户界面与组件 学习...