![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 62
zhangzhen02
这个作者很懒,什么都没留下…
展开
-
几次jvm问题排查,cpu飙高,oom等
在项目中经常遇到的jvm问题,排查经历记录如下。一,cpu飙高,频繁full gc,内存泄漏cpu飙高,看下gc情况,发现频繁full gcjava cpu占用cpu较高的线程也是gc线程。如此,则排查full gc的原因。根据堆转储分析,首先找占内存最大的类。发现有一个hashmap占内存巨大,其中存在大量不同的key,但value相同的键值对。对照代码,查出此处存在内存泄漏,存入方式key生成机制存在问题,且没有清理机制。导致该map持续增长,不能得到回收。内存持续泄漏,最终导致超过堆内存原创 2021-10-09 17:42:06 · 785 阅读 · 0 评论 -
JVM逃逸分析,作用及实战案例
一,是什么是逃逸分析?逃逸分析是分析指针可以存储的所有地方,用于判断指针是否能确保在当前线程。我理解的就是用来分析,一个对象是否仅在某个线程被访问到。二,为什么要进行逃逸分析?在JIT时,进行逃逸分析后,就可以确定对象仅在某一线程中被访问到,这样JIT就可以对其方法进行优化。包括:1.堆分配转化为栈分配2.锁消除3.分离对象或标量替换具体方式见下文。三,判断逃逸的标准有哪些?1.对象被赋值给堆中的变量或者类的静态变量2.对象被传进了不确定的代码中运行下面举几个例子public c原创 2020-06-30 15:20:44 · 628 阅读 · 0 评论 -
jvm内存细颗粒的划分及含义
JVM区域细颗粒度划分《深入jvm虚拟机》一书中对jvm内存区域分为,堆,元空间,栈,直接内存,程序计数器。而事实上,jvm空间中的划分远远比这个要细。大致如下图。所以Java进程占用的最大内存为:old+eden+survivor_from+survivor_to+string_constant_pool+code_cache+metaspace+thread_stack+direct...原创 2020-04-15 15:23:01 · 357 阅读 · 0 评论