摘要: 什么是伪共享 关于伪共享讲解最清楚的是这篇文章《剖析Disruptor:为什么会这么快?(三)伪共享》,我这里就直接摘抄其对伪共享的解释: 缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互 阅读全文
posted @ 2018-03-14 15:06 _AlbertWang 阅读(1391) 评论(0) 推荐(0) 编辑
摘要: 基础概念 先列出几个基础的概念: Shallow Heap 和 Retained Heap Shallow Heap表示对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和。 Retained Heap是该对象自己的Shallow Heap,并加上从该对象 阅读全文
posted @ 2018-03-14 15:00 _AlbertWang 阅读(6239) 评论(0) 推荐(1) 编辑
摘要: 原文地址:http://www.javatang.com JVM Heap Dump(堆转储文件)的生成 正如Thread Dump文件记录了当时JVM中线程运行的情况一样,Heap Dump记录了JVM中堆内存运行的情况。可以通过以下几种方式生成Heap Dump文件: 使用 jmap 命令生成 阅读全文
posted @ 2018-03-14 14:59 _AlbertWang 阅读(78321) 评论(2) 推荐(4) 编辑
摘要: 原文地址:http://www.javatang.com 症状及解决方案 下面列出几种常见的症状即对应的解决方案: CPU占用率很高,响应很慢 按照《Java内存泄漏分析系列之一:使用jstack定位线程堆栈信息》中所说的方法,先找到占用CPU的进程,然后再定位到对应的线程,最后分析出对应的堆栈信息 阅读全文
posted @ 2018-03-14 14:57 _AlbertWang 阅读(7427) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.javatang.com Thread Dump日志的线程信息 以下面的日志为例: "resin-22129" 线程名称:如果使用 java.lang.Thread 类生成一个线程的时候,线程名称为 Thread-(数字) 的形式,这里是resin生成的线程; dae 阅读全文
posted @ 2018-03-14 14:55 _AlbertWang 阅读(3088) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.javatang.com 使用jstat命令 当服务器CPU100%的时候,通过定位占用资源最大的线程定位到 VM Thread: 这个时候需要使用 jstat -gc <pid> <period> <times> 命令查看gc的信息,显示结果如下: 结果中每个项目的 阅读全文
posted @ 2018-03-14 11:40 _AlbertWang 阅读(3853) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.javatang.com 一个典型的thread dump文件主要由一下几个部分组成: 上图将JVM上的线程堆栈信息和线程信息做了详细的拆解。 第一部分:Full thread dump identifier 这一部分是内容最开始的部分,展示了快照文件的生成时间和JV 阅读全文
posted @ 2018-03-14 11:35 _AlbertWang 阅读(6387) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://www.javatang.com 前一段时间上线的系统升级之后,出现了严重的高CPU的问题,于是开始了一系列的优化处理之中,现在将这个过程做成一个系列的文章。 基本概念 基本概念 在对Java内存泄漏进行分析的时候,需要对jvm运行期间的内存占用、线程执行等情况进行记录的du 阅读全文
posted @ 2018-03-14 11:25 _AlbertWang 阅读(15588) 评论(0) 推荐(1) 编辑