一、前言
java 做到一定程度就会对jvm有一定的了解,了解运行时内存是什么样的,了解类加载机制等等。如果要做的更好的话,就要了解jvm性能调优的内容了。在这篇博客,小编结合自己的项目经验,对jvm调优的一些技巧做一些总结。当然现在的水平也是有一定限制的,希望有问题的地方,可以指出。
二、根据什么来判断有性能问题?
当我们的程序打成jar包或者war包,放到服务器上运行的时候。随着用户的访问,程序就会慢慢运行。所以我们就要模拟用户访问的情况,就可以使用jmeter来模拟。另外,我们需要关注一下那些指标?或者那些是影响我们程序运行的呢?这里我总结了一些:
- CPU
- GC情况
- 堆栈信息
- 内存实例占用情况
三、通过jvm命令来调优
当我们部署到服务器上的时候,我们的程序在服务器上就是一个进程,我们需要查看这个进程占用cup的情况,然后,就是要找进程中,那个线程是运行最频繁的,是否有死锁问题。看gc情况,是否有垃圾回收时间太长,或者存在内存泄漏、内存溢出的问题。最后查看内存中实例占用信息。
3.1 使用top命令查看cup等运行情况
linux系统中,输入top,查找出所有进程消耗的cup的情况,就可以看出消耗对多的是那个进程。