jvm 性能优化相关
1. 生产环境性能检测工具 TProFiler
2. 性能瓶颈可能的原因
2.1 每个线程都需要创建的临时对象,能改成静态对象就改成静态对象用来复用,否则尽量缩短生命周期
2.2 使用 Spotlight 查看并发压测时的 Weblogic 所在的 Linux 服务器
2.3 Spotlight 查看数据库服务器各项性能指标
2.4 线程死锁、等待的问题 用jdk的JStack
- 该拉取快照的服务器时间
- JVM 版本
- 以线程 ID(即 tid)升序依次列出当前进程中每个线程的调用栈
- 死锁(如果有的话)
- 阻塞锁链
- 打开的锁链
- 监视器解锁情况跟踪
2.5 tla空间的调整 可能是 TLA 空间不足引起。TLA 是 thread local area 的缩写,是每个线程私有的空间,所以在多线程环境下 TLA 带来的性能提升是显而易见的。如果大部分线程的需要分配的对象都较大,可以考虑提高 TLA 空间,因为这样更大的对象可以在 TLA 中进行分配,这样就不用担心和其它线程的同步问题了。但这个也不可以调的太大,否则也会带来一些问题,比如会带来更多内存碎片、更加频繁的垃圾搜集。
TLA 默认最小大小 2 KB,默认首选大小 16 KB – 256 KB (取决于新生代分区大小)。这里我们调整 TLA 空间大小为最小 32 KB,首选 1024 KB,JVM 启动参数中加入:
-XXtlaSize:min=32k,preferred=1024k
2.6 服务堆内存太小
2.7 找到进程中占用 CPU 较高的那些线程