摘要: 概述 最近我们公司在帮一个客户查一个JVM的问题(JDK1.8.0_191-b12),发现一个系统老是被OS Kill掉,是内存泄露导致的。在查的过程中,阴差阳错地发现了JVM另外的一个Bug。这个Bug可能会导致大量物理内存被使用,我们已经反馈给了社区,并得到快速反馈,预计在OpenJDK8最新版 阅读全文
posted @ 2020-05-22 10:44 HeapDump性能社区 阅读(1326) 评论(0) 推荐(6) 编辑
摘要: 概述 之所以会写这个,主要是因为最近做的一个项目碰到了一个移位的问题,因为位移操作溢出导致结果不准确,本来可以点到为止,问题也能很快解决,但是不痛不痒的感觉着实让人不爽,于是深扒了下个中细节,直到看到Intel的指令规约才算释然,希望这篇文章能引起大家共鸣。 本文或许看起来会比较枯燥,不过其实认真看 阅读全文
posted @ 2020-05-19 14:46 HeapDump性能社区 阅读(506) 评论(0) 推荐(1) 编辑
摘要: 问题描述 最近经常被问到一个问题,”为什么我们系统进程占用的物理内存(Res/Rss)会远远大于设置的Xmx值”,比如Xmx设置1.7G,但是top看到的Res的值却达到了3.0G,随着进程的运行,Res的值还在递增,直到达到某个值,被OS当做bad process直接被kill掉了。 top - 阅读全文
posted @ 2020-05-12 14:45 HeapDump性能社区 阅读(694) 评论(0) 推荐(0) 编辑
摘要: 本文来自: PerfMa技术社区 PerfMa(笨马网络)官网 问题概述 昨天晚上同事突然找我看个问题,有个系统一启动怎么就发生了System GC(从GC日志里看到了GC Cause是System GC),按照我的经验,这十有八九是堆外内存不够所致,但是启动就不够,这似乎不太可能,于是我又说是不是 阅读全文
posted @ 2020-04-28 14:28 HeapDump性能社区 阅读(372) 评论(0) 推荐(0) 编辑
摘要: JVM参数是什么 大家照相通常使用手机就够用了,但是针对发烧友来说会使用更专业的设备,比如单反相机,在单反里有好几个模式,P/A/S/M,其中P是傻瓜模式,程序会自动根据环境设置快门速度和光圈大小,以得到相对合适的曝光效果。A档是光圈优先,用户可以自己设置光圈大小,快门速度等都交给相机程序来决定,类 阅读全文
posted @ 2020-04-21 16:52 HeapDump性能社区 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 本文来自PerfMa技术社区:https://club.perfma.comPerfMa(笨马网络)官网:https://www.perfma.com 概述 上周有同事问了我一个现象很诡异的问题,说JDK7和JDK8下的System.nanoTime()输出完全不一样,而且差距还非常大,是不是两个版 阅读全文
posted @ 2020-04-14 11:56 HeapDump性能社区 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 类的加载过程说复杂很复杂,说简单也简单,说复杂是因为细节很多,比如说今天要说的这个,可能很多人都不了解;说简单,大致都知道类加载有这么几个阶段,loaded->linked->initialized,为了让大家能更轻松地知道我今天说的这个话题,我不详细说类加载的整个过程,改天有时间有精力了我将整个类 阅读全文
posted @ 2020-04-09 10:45 HeapDump性能社区 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 问题描述 当我们一个系统既需要mysql驱动,也需要oracle驱动的时候,在并发加载初始化这些驱动类的过程中产生死锁的可能性非常大,下面是一个模拟的例子,对于Thread2的实现其实是jdk里java.sql.DriverService的逻辑,也是我们第一次调用java.sql.DriverMan 阅读全文
posted @ 2020-04-02 11:38 HeapDump性能社区 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 一张图简单描述死锁 如上图,Thread1 拿到了 object1,Thread2 拿到了 object2,但是现在 Thread1 需要拿到 object2 的锁才能继续往下,Thread2 又要拿到 object1 才能继续往下,于是哪个线程都无法得到满足继续往下来释放对方所需要的锁对象,从而造 阅读全文
posted @ 2020-03-27 14:24 HeapDump性能社区 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 概述 本文重点讲述javaagent的具体实现,因为它面向的是我们java程序员,而且agent都是用java编写的,不需要太多的c/c++编程基础,不过这篇文章里也会讲到JVMTIAgent(c实现的),因为javaagent的运行还是依赖于一个特殊的JVMTIAgent。 对于javaagent 阅读全文
posted @ 2020-03-25 16:22 HeapDump性能社区 阅读(587) 评论(0) 推荐(0) 编辑