linux java调优

在这里插入图片描述

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

U2FsdGVkX19r7vvImQxNgV41Iie2zswx/HJlN725d6fMCoyD7Ux4YgA2udesEHUa
rfLZc+0IvLjRKia1hw+dpD7cElgjmIDhHWzb7u6pUOoiAreRIz74uDgVNerHkvc4
dDRQeggHB0mc1e1F/dz21jFD3Tg0SLtlPZFhjeJE4wXDGcstZfD81LSu7UC9EPrI
M39zJokJe9sc8MqRIfDHJ6gPPuHVvIOd1d19zVHAuhO9N+nydE47YDi0jDjjuain
+3ZaZ1WMs8XuL3anI+qwGx5RroN7VLvZ9ZgwB6psQEsaXz3FuKibLnSCPhQBD+CX
JulM06WYtNpX4eZoN6rJ8M4ppw2gZyf8D68hTm+yXTsn0OtKlBpEsDzs4ea1sbPk
y4WQXcWNTErwiPsLWXFGX0QZXLdqtLaz8KS5YLGEyALQTZSnw5VnH74tby2Eaa4t
GayqOtIgaCGQruUSDBYqibzxTcK9cEwPCFYPO6eEsDlB5EnBq0tplz0lCKvICu9t
wkoJ+5VXL137pbTJ83UulAWIZKeOaTYwC12bxj4g6X+MUu7sIuDVjPe8sHfnAjup
qNXbpng6Yn8bWv7o1tOnmhJw/sbNVfeRaeDJnIgKXWOF+4qNYOm4cmpjH6gxAt2V
Hb60ZomXrImXEMayokSBjn8hBMODItrKkGldvAJvf4w9Nqi05zOsfs5DE5S8Nasg
FiPIvHi0x2Biab/CzeNqTS4iMLjGlAVUGsSKZkoamjgQrF7kigdNKqhEzD4WGksM
t6fYym//Il7MDktKbx+PkF+bcRDRMVheJyFDCf1kAW/mebX/w753JZW1zsYkrmUm
77ErPCU9rvB+cnvEUtkFo1QxEMO69deoEJ0ezOBUQ40Azn3DWiAiptdU82XNIC8F
pnPEMCV5aMGyLcJVSwgKNUS4tLS1RUG2e5rcPqGXtwG6QnlA5M+zATVdn5BLbO4D
j+bSQ6TXbf01VUqNxPmoz8eGKqMlAe5HaMg+IIl7eamlBANg2/a9SFn4oJduVTav
uF0yOyjqLuA8MeI9CToD35HJ0C8i4OQXSsDc95Q9Dqm7oNxkA4/tpDicTfd2oIVr
IBntUqWnCxjW82IDCKq0JRGJ1JK95OQYjF1jqXIUOvICIMcRNejGIOwqpVy8HbK+
Oss5yU9uqHgJesJlGkuGxW23EIDGywuzU7fbMQS270yStbzs0t8HpMjOUjj0l92X
gr35ki2w9mt8mcW/dBU4fUKixTVM/0Ur4vwMmqrUCiH6keppKJ+ya221vR3z/Wsj
FWHFN3ggOWj0bSrJnLmWtQ1Sklaqydxv/sZgc/+md/25ED39qwXjqEgCt2BAy35Z
YuwgIg+lFlIdgwfCdmStNFBzCBaphKJt+mCanEfmUDU5LXZZcdfER5dTLD51EZ0V
j83/5ON6Actjo/9BFcvsTj0OKq2JTq7dZCiOSL2YFRVcP/qopcyxSaMixQ8ruuy6
zIADuF9b4DJmcfqz3AXqH5c6Dvi4XJUFv8S8iShKiOOK4FXRlWcxJ9tDDx/MbWv5
J8SB9V09RuWu4ppTK93T9QFaMHHi8ATdvhCuAJqVh9Rd15IHRD7/9rhO0fna0DuR
/YIf+kTHvVam41k0WIhLuHsQWiAHci0FjglnPjzyNS7+7TOcrL6xhZcf/a03PlWA
qe2NlHMcipYefB81oOLQekmNqU6c1IHCALQqQ53sEDdxH3IYHhLhrdsKMvePC5ka
rGQRhhEA2fHKho2F2MjO+R88p1/rTtSfFkgk0cxRJrEjAjvBOIQ8pYWhIU7Ylkkx
Lwzho8w1VZrKEN68eFMubgdePWqJbUPm8NN9sQyt1gBfoyf1nMl5B85nvMfvytDe
MX0YaFKVBrqK3YYtHFayo3Wl/wcLCL36Nc79D6IVNeQqsgY37j8M4cGdQs3nTI/5
bGGoSc6us1PFUdQ6Bg1iFG6D2xRuA/xegeQYICAwwSrPhB9YbCa1/yZqtcUlnIgD
pqoRM8X5kzdkhDjLK+/9b3gNnvO1MXxBnRyLw3W7BX1vWpvNG+feR2lz1/WwHGDg
966pKidsHy7gnzSh1QsDQjfHln+Q9gNkEdh3IZCOXDzPwvLfuO0Grq2vU1tCMzI1
PXWOeJ+tOdBzBX8RTolJSygzFR2/jHRqSruRtcTzXQ6a4Nbm/zwTw6TYR3wZ3C00
uLHZO5N6W0vhxgGWc6hkYPrIauOkM+lXu5+UhjX7MdIUwnWwjDJ2Kny1qtlq20/O
EF0yv87ASYEWsr7KFKaLWVIw76Z4FRXrxaPMToDJg2+x+CgULFRwMlFxICsw8mtW
YajzTS+HJhs6XDB0Emr/K2PFyDBvVwrz826H+o0vdNvjG/Jc3/II/G+7p90X/uid
19FqHyXw73JQVxafMcCE8GDTsayyLIGvGqe7RnWPafgEn0zrsvyT7nUDD9NB2n7H
KXlBuT593U5sSGcrh+jbNmd5HsoSi0XBdlY4eR+44oLq0HbeefRRXBb9mXQpZRvE
Hx1P33yuTSwVV3r3oQ3YwRImxprLy3jSBj0PYAiQ51G7WFcmewb6l4EchbPhdin3
HsfXWsy3ZZTS6VlpTvJW1w87HoYGeTfpei8bdQyN3LD8tWAKnafVjIPFmzTzmhKu
hPTkB0FAPubemw6IcymC4o+3YKIK4dXgyL+7SntYo7Xcddcf8qAUp2HcEdwJGPEy
RXDNgdpC/hVpKU9TIT1o6fI0cn4h7Fv+9VCAkiX77TfVwdYnof0NamTEi91qzbRu
cP7GBCwTECIaLk0C+BvZgOXy5OTLyLA+HtYOgVmwJgP3u/p3rIU+rn8BAmrF1yFl
ZeKcW0LBNQ38wxKxcixoQBx/+kmDScDFDmfluRbM41kHxjMDzM7kho7ON0CcGsUp
x9e+Q08CS10KnqKXp5yO+kfrVRqT0m4OqwzQqKgCxbYXtqzOvVKA2FEAWnkdAZdH
1cVr0lNTKbcZXuEJcZTdo2LPCOY+RaaUM1TuQXh68DXc+EyCtE+04vKPkeXvxMnu
yYzWqjLOKka1rAFQpB/E440+3e7VLXqQz+GB1JLXktmpE2GgHJ2hvKFx0V0+/kEC
9e3ihKnCfK5owVmOh1CSZf/NMP4fWMPfBL66YtBblJQ8iKAwA31+h+EeTOXBVgNY
QAElFdpF8XNYtiVzzI2P1/+/VPxZpgU45YZv0BLej2ba4VtfCj3EUAbbnmM3Q5p0
1QkWCF5ddrJzxpk/CyChE85l73JeTcGgddBBIdFiCD8qYktAxzqP2o/zO1q19J4K
JcOmm2BTEVFeOKTxF8+v/jpY6iBbFYVCPpZHPZR8rVcYpAQplWUpnNazo2AdvJvx
mwsG9cnAeeBBjX6pC60TnaIRIozVwNs6rKuH4oMWnedcSNka7Ov7jAfTZA+iveEg
8H0ferKLGWxDMqntjPbGuifU+hcSTIjGB+MZHFwJbG2D98VL7f64qmoduDYYt6jf
8b8/4GTv/y1ItX2J4ax4KK5gAY6rO/xC+giFsX+6Zm7kR6WWOQ5WSbJdi2Eud/SV
NvEZ1G76qQcRkDf6aB89NTqVGuc12i6HJHdNVSWRrvsOby34ezpu00OuzwKBE6sS
LZKrh90qoEWA5sLKBVbVOrh7tanbRxmvsuWIC5X60qw6eTHgLmKFs/hcbfRj3lbN
46tdfII/9/JXIlA8WVTA5Q==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值