一、JDK的工具
命令行工具:
- jps:虚拟机进程状况工具
- jstat:虚拟机统计信息监视工具
- jinfo:Java配置信息工具
- jmap:Java内存映像工具
- jhat:虚拟机堆转储快照分析工具
- jstack:Java堆栈跟踪工具
可视化工具:
- JConsole:Java监视与管理控制台
二、调优案例
1、高性能硬件上的程序部署策略
部署方式:
一:通过64位JDK来使用大内存
二:使用若干个32位虚拟机建立逻辑集群来利用硬件资源(推荐)
部署方式一需要面临的问题:
部署方式二需要面临的问题:
2、集群间同步导致的内存溢出
案例:
一个实现了重发机制的同步系统,在收到同步成功的消息之前,发送的信息必须在内存中保留。但是,如果网络情况不能满足传输要求时,重发数据在内存中不断堆积,很快就会产生内存溢出。
解决思路:
需要集群同步的话,可以允许读操作频繁,因为数据在本地内存有一份副本,读取的动作不会耗费多少资源,但不应有过于频繁的写操作,这回带来很大的网络同步开销。
3、堆外内存导致的溢出错误
4、外部命令导致系统缓慢
案例:
使用Java的Runtime.getRuntime().exec()方法调用外部命令,导致新建进程
解决思路:
尽量使用Java的API替代
5、服务器JVM进程崩溃
(略)