linux java调优

linux java调优_第1张图片

  1. 适用场景

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相关参数大小达到优化目的。

U2FsdGVkX18r6CGmpG0DgiIu2QditPN7BzLchK0B7C7uOWgjtfJuD5KxYqlfV8gS
5JXXE4BMbWt4qZ3LWp75lxH+2OXFrDYDBe9rT1FoIHFwvLq2C7LSyA76TuGyKbop
ihYIPUlCKeTbkATbr0Qyd5kg9VsKFWJjSmzSKlB4XfICLt8EO4xCW8Iw/9MaYLjX
Rkw0vczDJo7oEG27P7toiaeKiItaxadRnF9CSPaQOJtha4TkyT+CmfEtQl4u7Lv9
9w2ti6ja2DHCJNLZm6TAp66S7URSZpCJphW8BLKMswM+Wt9edYVVpWaz7suM6Acj
h3no6/ddhmNrQFOFWu/pWIP9qmMqsfjJxsXwym1tHWunD3oglN09hNS43mIhPLob
cpE4ykeMLCdA6q+29jqfrWH99YzQIE7+NE7Zpm6k5LZ1ojKW+es6uSwqrXaLmsx+
m5fj6jAtttHxteGvleARBa3V7G5a1yz1EgTIKV72TT6HiRRI++magLz5q0HG+UDx
4UjHfi/KeRWzEU46whLk3AaHsBwZOxEJABdpF7PdEgk0jz93KGS9OjY0MpjvCqU0
H1Wml53nStYeD8bxzyVPN1OdzbL4KF5fN4pC9LLfU78B03UJ+HCnSimcp/a2IP9t
Gac9YpLqE6aOvwpknvuVDIH7XwFF+x2JVneaVAppc3vII0Tfn/peRTUoodQfHJTE
r4O32tFSL1vCTm6aMl1l0z9Mgb0KK/2PV4t0D7eHUp27CYnRdTRU11kxrdhAiGK6
zJnjAt+YSMQaVxF62APoAMbjOXs4RBt30DZvXG8Qr2k8Zj4y0IKuW0IUjEr2aKof
lwdzlcjjU7rpmtvCxNxcZcgo4Cqyd+7W8OTIm9OukRmp4TOT3z9UOiXmoG5i/OR4
wo52hB9PmxalMZE3Y6O4p9SzYfeTjhiVigeH6VxvTT6qppFBjR34jIehBqiy7GlB
k9JgUK9yVVvdb9YCtdgzLvcuUohyBl3E75QnVJ/iEnasMwUvsib3kKZ6Qn/DTWb+
OMJH4OkOVJWYQDcAD23WxZHpFq7/a3hCN1B+YjPOPjk2ABgs9TW1BObISGEnxAGM
u9T4MQRzmMgEoMBYLYlElU4QrX8tpZjsEzcq8uHzGdm10rXGvAO+EmydnNk8Ayom
J789c2CXC0mdq5H0ajP/ujlW3f7rgfDDLlQrj8CucYhoz0v9DE72jC2flFbcTJMX
oDAgFakSMux7SOSDlM66OhZvtofI1izZSXJPzCvxe/FLVBkG2y3QDwq+bWAYNRUJ
786k2/H98zegH/ryC4Gg5xcbV05X4V2qjvTx0WckYUZEXXKwy0dWGCUN7VOoNGEr
RARMZPe1+02QeSwdAUtjNBNoewrKaTyRe51iEhmReu0pN0oYT08TAQSb2AfPCX6J
dOx7/fo2Ml6WwsFEa2ZJ9Vjz3bqthWHscw5zIs47lbQk2N7qGwOMwqHWKxVRV0+f
gyC6tyCDwUvJj7lZnSqaAsUtiGiGWuvxJCzpZWXyQ881hhLTeWSv+dy9+8bGvUfK
O7thUUQfAUOznhvSbV0LRKQBpEMqYiOIOfLseCPL6k5e95/F0n3Rkx4u5bvrxqGI
inA2Iwea+/r3OqCDl1CxpuSh0LvFBB/igoVMFxKdeIY1oQSEimYiO9WUITPUDGCi
pBdX68Hof2ukYA1Aqx8CE1vGOnieLtUcc4M1nZOBYqOyT/EvWW8JQa+0inPvztPc
c2K3UxlWInyYOzyS+2dZhM1H9VZ49sdG6G1j8K1tSeNtkIDFSs8AUCsTk+8Sg6Y1
kgx5Ovz6j0ZxPr6qb5qdsuAg6PN2AF55ttWChF0/WdDjAGAWs2CarYsUZURZ4CCy
hLrshfCKK9gNTnJA+x8fUXpvKPKdo9V7JN0U3rtWpChBRSgsksNTbTu7fx7VvnU8
50hStK05+zpEFvEG3agxVeQXyHXNCBSlAUD/Nb8OZka2lnRpncI1vaz9+mZbL+uL
aW726vdCT8P/ai1SLU4+HEOa3d0KJ9nFcaVhJbdK8MenC1bsR8cnhJGEkKWL6fnN
5ItbulV5hDWXnTjHD3PashC6O3IDChpK2BvKMp94gmA6TpIEyh6VHvPRIcslQxX8
mvW6pPep6qJG1C3UqWXvRH8lioC5gA9N8mjN9cY3/P6/eXrFDObKSpTD6YuO0rmi
BnEAyGUpXxkPS4UjUt1hPMhUGjanBJ3aoK/jahqS+tJMl3Ync7NuJMAIAvoBvDzh
mSFU+FxOlt0YY5PnQZYNiXVUup0RbGhJ/nhz027iL9mDIz1vgXaYnHmHjFDnAwEa
zlmabKzHOJRz43hTbaDfLRftxHQejySa7dYlEz76qNpaNxH5fqt/DYlUiZwys+d3
vVRnJ9kfw0VJoZgVdjbn0tndM+XvBBXfKDB3ryz4cyhbrgt9vM/2cF/hxR2l3YOo
8YeEdDM4rcoeL+lJoclXOH5KFxXkzqlxHxTm8U1pTluBlENjb4j5wlj5mqAQASGh
YnRZT/r4LDDx6A1bSiQh8kBbfLADTAKSyyvySiojsQxHjDx2eV4Dq/YkX09OfucU
yBd0ccihwlZOggbbMQESvJzEtOaTEJcZkpcUa5AQQguDyhgY4s1UwCthBxzuio0p
vEedJryH3m21hS7h1hyRMXxi0gCPxJMkSJCIiBtAArVHgHoPkBUz2JAds8tRLSQA
t+K9U6oc7C5a6gytJyzL9k9EDb01Pv4zUEbC6u/amBgVLZfCn/MZRv1pC4WCEgiR
QXpCWrmcSZU0ehWttznSNqMU6U5Y7YquLpO3lOR42uXX8TbFJsH0ru8Zfwi05rd2
X2VBCsoLRAVcOwhp2jTWCBmdncV3qrcpSHGFWVM+MKe0pNDDZ9nE9RDX62q6pJLj
GngG770P+pw9WJ967WWaxEanNfp6nSjElBX3kqwf/LeGWFm+Ed0dh6Lmh4t3SclJ
irNztR1STr5Ts5D3v5IEm+ND+qHHL5+lfU0kNRFqENm5eKGiTy2ApyfKk99A/zWj
BLlN7jRlA/cgelWeYTuZpKG9sjRZK4t9yXy1UV30/TcIrbCKyzBWe7K2X4mN5/Ll
2YeEIw0cHLyXh1xMSZTUF98L2zglRUbij/2THueDXwWJKMj3ZavtKdk249PO0KAM
tB1+ANmg2FIo2LkxRH5Yle8UTA3N3fGUFlK6AJAtrIGTXl2N/dhbXIcAcTP8Vo7h
boTdoherIqK5Pe5yj5es7X+5UHoiJObP7pD0NLcX6960pAKwXgrqIImfCCqHvVDK
Zu0L5OXMwQBWmGtQTBVqtXCAjxYE4t1D6DrA3dW0ok8ZoZVLqW7L5cRqZUQcWylj
WvHjKRsV/2NjFyx2TWMm2q+PF2rnP1juTyDBhNlb5yo9XymS93q49sdef5lxmHvG
17y8dASFJarXnk/43pKjmEmn/l9yorEIbWDRotsrhsnYVMfIDmEd/LSGd3WutLuy
F/i/OvTO/iVkgQo9Ftnu7fSPbJW5RoVJA6SnaMYBs0PgQDMPBywtCcD1zMLUU1nL
RKJf6PTd+nFsUvBrPFIDqDM+SfHV2sV6m2zQNm4YSr1FZGmb+4Px+pIJZ7Dfem+v
jSYXjoDMFbxRFUePoJTqHb3TTDe1qWh+xet+CitLmG9fBllNaAtd7pY7qhmYS/Ai
eWDXK+W51D2vIalj7raZLMu4tqJEYu8lVv9vjFw8GGzHLZk5E05ieRtGDMsXI/1f
O1LCL42kFXpJ0VcOdvqBChn3RFkypArunTPTquUr17sNNeJM/eipJ5/Im+Es5Zs1
nX180LdmYIhXWKPgzm8Vxlf0nRNeSdCiitViPAUSXm1tdvIkknzMmUZoSzcQDclc
iV6oN5KIMdN+xoxswMoNluy4qLC3/S+V2+eqNMxyINA=

你可能感兴趣的:(笔记)