coolrainman 2019-06-28
在上一期Tomcat优化中,针对JVM相关主要参数做过一定说明,这一期主要介绍进行一些概念及经验。后面分章节去讲述相关工具的基本使用。
整体来讲,系统优化应先优化架构及代码,来解决具体功能点效率问题。最后通过JVM监控工具来发现一些隐藏较为深入的问题。
出现以上情况,就得使用工具分析JVM来确定问题
JDK1.7及以下
JDK1.8下,PermGen替换成Vm MetaSpace
JVM线程状态迁移
阻塞状态(Bloked)
线程Bloked总数数量
线程Bloked多的情况下,考虑对待处理数据进行分片,进行多通道,多线程处理提高系统性能
如果系统处理慢,但CPU占用一直很低,就需要梳理系统处理流程,串行处理该并行处理,并行处理流程提高并发来解决。
当两个或者多个线程尝试获取其他资源的锁,而每个线程又陷入无限等待其他资源锁的释放(相互等待),除非一个用户的进程被终止。
慎用线程join操作
MySql中两个线程同时对两条记录做先读后写操作
找到一个分配资源的序列能让所有进程都顺利完成
采用预分配策略检查分配完成时系统是否处在安全状态
监控线程状态,如果出现死锁得到相关代码位置
利用死锁定理化间资源分配图来分析死锁的存在
参见以下资料:
https://www.coursera.org/lect...
本章主要讲了一些核心知识,主要为了让大家了解系统优化到底优化和解决什么问题,什么是优化的目标。后续章节会讲到tomcat的JMX配置,VisualVM,Tprofile等工具的使用。
JVM线程有哪些状态,这些线程大多处于什么样的状态分布, 我们可以称系统运行是健康的。