linux java调优

在这里插入图片描述

Tomcat 运行过程遇到Caused by: java.lang.OutOfMemoryError: PermGen space或者java.lang.OutOfMemoryError: Java heap space错误。

  1. 异常原因
    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这块内存主要是被JVM存放Class和Meta信息的。Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同。GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar,其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。

Java heap space:JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。

  1. 解决办法

修改TOMCAT_HOME/bin/catalina.sh文件:

OS specific support. $var must be set to either true or false.

JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=512m -Djava.awt.headless=true"

cygwin=false

darwin=false

加入以上红色JAVA_OPTS行记录后重启tomcat服务,其中JAVA_OPTS各参数的具体数值大小须根据实际服务器物理内存大小进行分配。

  1. 监控JVM

4.1 查看jdk安装路径
可选择的命令:

(1) # echo $JAVA_HOME

(2) # whereis java

(3) # which java (java执行路径)

(4) # echo $PATH

本例:

4.2 查看java进程

采用jdk提供的jps(JavaVirtual Machine Process Status Tool)小工具,可查看当前Java进程。

本例:进入/usr/java/jdk1.7.0_79目录后,执行bin/jps -v:

可看到Bootstrap 前面的数字10142即为Java进程号,同时可看到JAVA_OPTS参数生效情况。

4.3 查看JVM的GC情况

使用jstat工具查看,语法为:

jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]参数解释:

*Options -选项,我们一般使用-gcutil查看GC情况

vmid -VM的进程号,即当前运行的java进程号

interval -间隔时间,单位为秒或毫秒

本例:同样在/usr/java/jdk1.7.0_79目录中查看java进程号10142且每隔3秒输出1次,执行# bin/jstat -gcutil 10142 3000 :

参数说明如下:

S0 -Heap上的Survivor space 0区已使用空间的百分比

S1 -Heap上的Survivor space 1区已使用空间的百分比

E -Heap上Eden space区已使用空间的百分比

O -Heap上的Old space区已使用空间的百分比,达到100%,就是内存溢出了

P -Perm space区已使用空间的百分比,达到100%,就是内存溢出了

YGC -从应用程序启动到采样时发生Yang GC 的次数

YGCT -从应用程序启动到采样时Yang GC所用的时间【单位秒】

FGC -从应用程序启动到采样时Full GC的次数

FGCT -从应用程序启动到采样时Full GC所用的时间

GCT -从应用程序启动到采样时用于垃圾回收的总时间【单位秒】

通过监控O、P数值情况,再次调整JAVA_OPTS相关参数大小达到优化目的。

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

发布了219 篇原创文章 · 获赞 3 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/xmh_sxh_1314/article/details/105497721