一:应用服务器介绍
1.主流服务器:tomcat、Apache、Jboss、Weblogic、IIS、Nginx 等
2.服务器拓扑图
browser web services 数据库
client
二:分析依据
1.数据依据:操作系统性能计数器、LR报错日志、运行日志、异常堆栈、GC日志、线程快照(threaddump/javacore文件)、堆栈存储快照(headpump/horof文件)等
2.工具:JDK可视化工具、jdk命令行
三:可视化工具
1.JConsole工具
2.jvisualvm.exe工具
说明:堆内存走势是锯齿状,说明内存有吃进有回收,如果是一直上升的说明没有回收,需要查看
线程是状态,等待状态的线程需要关注,正常的情况下要一直运行
关于新生代、老年代的概念
我是一个普通的Java对象,我出生在Eden区,在Eden区我还看到和我长的很像的小兄弟,我们在Eden区中玩了挺长时间。有一天Eden区中的人实在是太多了,我就被迫去了Survivor区的“From”区,自从去了Survivor区,我就开始漂了,有时候在Survivor的“From”区,有时候在Survivor的“To”区,居无定所。直到我18岁的时候,爸爸说我成人了,该去社会上闯闯了。于是我就去了年老代那边,年老代里,人很多,并且年龄都挺大的,我在这里也认识了很多人。在年老代里,我生活了20年(每次GC加一岁),然后被回收。
四:JDK命令行工具
1.JPS:虚拟机进程状态工具
jps[option][hostid]
-q 只输出LVMID,省略主类名称;
-m 输出虚拟机进程启动时传递给主类main()函数的参数
-l输出主类的全名,如果进程致死那个的时jar包,则输出jar路劲
-v输出虚拟机进程启动时的jvm参数
2.Jstat虚拟机统计信息监测工具
如:查看GC回收情况,每5秒钟的情况,soc幸存区S0总字节,S1C幸存区S1总字节,S0U幸存区使用的,S1U幸存区使用的,EC新生代总大小,EU新生代使用的,OC老年代总大小,OU老年代使用的字节
监测类装在、卸载数量、总空间以及类装载所消耗的时间
3.Jinfo 实时查看、调整虚拟机各项参数
4.jmap命令 jmap [opyion]vmid
5.jstack是java堆栈跟踪工具,用于生成虚拟机当前时刻的线程快照jstack [opyion]vmid