守护线程和非守护线程
程序中存在守护线程与非守护线程,干活的部分属于非守护线程,守护线程只负责保护干活的线程不
被内存回收,当非守护线程全部执行完毕,那么守护线程也会同时销毁
JVM/GC,jvm是指java虚拟机,gc是指内存回收机制,在java中,gc是由程序自动执行的
JVM的生命周期
(1)JVM实例的诞生:
当启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函
数的class都可以作为JVM实例运行的起点。
(2)JVM实例的运行:
main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和
非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,java程序也可以标明自己创建的
线程是守护线程。
(3)JVM实例的消亡:
当程序中的所有非守护线程都终止时,JVM才退出;
关键参数---堆内存的设置
在/usr/local/tomcat7-8083/bin目录,打开catalina.sh
JAVA_OPTS='-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m #Xms起
始堆内存 Xmx最大堆内存 #:PermSize永久代,在JDK1.8之后称之为元空间,注意最大堆内存不可以
超过系统内存的80%
将Xms与Xmx设置成相同的值,可以避免GC完成后对jvm堆的大小进行重新调整
JMeter也可以配置堆内存
在bin目录下,jmeter.bat文件,在大约151行
set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
修改方式与tomcat一样
JVM监控工具 visualvm
如果是1.8以前的版本,那么JDK已经自带这个工具,在jdk安装目录的bin目录
如果是1.8以后的版本,那么需要自行安装
https://visualvm.github.io/download.html
对于自行安装的版本,运行前需要配置一下路径
进入visualvm的etc的目录,
加上一行你的jdk的路径visualvm_jdkhome="你的JDK路径"
松勤SONGQIN还需要配置一个GC插件,在工具→插件→可用插件,里面选择visual gc,点击左下角的安装,就可以使
用了
VisualVM远程监控都市商城服务器
1.JMX方式,这种方式没有GC的监控
添加一个catalina-jmx-remote.jar文件到都市商城的/usr/local/tomcat7-8083/lib
配置好之后,重启tomcat就可以连接上了
如果仍然不能连接,那么大多是防火墙拒绝访问,此时可以关闭防火墙,或者将10001端口添加到白名
systemctl stop fifirewalld #关闭防火墙
fifirewall-cmd --add-port=10001/tcp --permanent #将10001端口添加到信任名单中
2.JSTATD方式,这种方式没有CPU监控画面
执行以下步骤:
复制java.plicy文件至都市商城服务器的/usr/local/jdk1.7.0_80/jre/lib/security
启动jstatd.sh脚本,进入/data/startup
将12行改为./jstatd -J-Djava.security.policy=jstatd.all.policy -p 10003 -J
Djava.rmi.server.hostname=192.168.80.160 -J-Djava.rmi.server.logCalls=true
如果Visualvm无法连接jstatd,那么尝试将都市商城的hosts文件中的127.0.0.1改为你的ip,hosts文
件的位置/etc/hosts,之后重启tomcat
GC的指标
如果满足下面的指标,则一般不需要进行GC调优:
Minor GC执行时间不到50ms;
Minor GC执行不频繁,约10秒一次;
Full GC执行时间不到1s;
Full GC执行频率不算频繁,不低于10分钟1次;
posted on 2021-06-27 15:33  zeroLXB  阅读(66)  评论(0编辑  收藏  举报