摘要: 概述 VisualVM能够监控线程,内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪一个对象分配出来的); VisualVM使用简单,几乎0配置,功能还是比较丰富的,几乎包括了其他JDK自带命令的所有功能; 内存信息; 线程信息; 阅读全文
posted @ 2020-03-04 17:01 慕容子月 阅读(430) 评论(0) 推荐(0) 编辑
摘要: jstack的使用 有些时候我们需要查看下jvm中的线程执行情况,比如,发现服务器的CPU的负载突然增 高了、出现了死锁、死循环等,我们该如何分析呢? 由于程序是正常运行的,没有任何的输出,从日志方面也看不出什么问题,所以就需要 看下jvm的内部线程的执行情况,然后再进行分析查找出原因。 这个时候, 阅读全文
posted @ 2020-03-04 16:06 慕容子月 阅读(464) 评论(0) 推荐(0) 编辑
摘要: 前面通过jstat可以对JVM对的内存进行统计分析,而jmap可以获取到更加详细的内容,如:内存使用情况的汇总,对内存溢出的定位与分析。 查看内存使用情况 使用命令【jmap -heap 进程号】 Attaching to process ID 17656, please wait... Debug 阅读全文
posted @ 2020-03-04 15:32 慕容子月 阅读(2112) 评论(0) 推荐(0) 编辑
摘要: jdk1.7的堆内存模型 1、Young 年轻区(代) Young区被划分为三部分,Eden区和两个大小严格相同的Survivor区,其中,Survivor区间中,某一时刻只有其中一个是被使用的,另外一个留做垃圾收集时复制对象用,在Eden区间变满的时候, GC就会将存活的对象移到空闲的Surviv 阅读全文
posted @ 2020-03-04 15:13 慕容子月 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 我们为什么要对jvm做优化? 在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们可能将有下面的需求: 运行的应用“卡住了”,日志不输出,程序没有反应 服务器的CPU负载突然升高 在多线程应用下,如何分配线程的数量? jvm的运行参数 在jvm中有很多的参数可以进行设置, 阅读全文
posted @ 2020-03-04 14:56 慕容子月 阅读(519) 评论(0) 推荐(0) 编辑