![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM调优
JVM调优
glamour2015
这个作者很懒,什么都没留下…
展开
-
Dump文件分析
Dump文件分析本文主要介绍Dump文件结构,理解Dump文件对于分析线程高占用、死锁、内存溢出等高级问题有非常重要的指导意义。什么是Dump文件Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给程序编写人员调试程序用的,这种文件必须用专用工具软件打开。如何生成Dump文件使用命令:jstack pid可以查看到当前运行的java进...原创 2020-05-02 17:28:32 · 1272 阅读 · 0 评论 -
Finalizer 导致的OOM
本文介绍的是Java里一个内建的概念,Finalizer。你可能对它对数家珍,但也可能从未听闻过,这得看你有没有花时间完整地看过一遍java.lang.Object类了。在java.lang.Object里面就有一个finalize()的方法。这个方法的实现是空的,不过一旦实现了这个方法,就会触发JVM的内部行为,威力和危险并存。如果JVM发现某个类实现了finalize()方法的话,那么见证奇...转载 2020-04-12 16:58:52 · 394 阅读 · 0 评论 -
深入剖析JVM之G1收集器、及回收流程、与推荐用例
JVM垃圾收集器发展历程JVM垃圾收集器发展历程第一阶段,Serial(串行)收集器在jdk1.3.1之前,java虚拟机仅仅能使用Serial收集器。 Serial收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅是说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。第二阶段,Parallel(并行...转载 2020-04-04 14:41:10 · 156 阅读 · 0 评论 -
JVM性能调优的6大步骤,及关键调优参数详解
JVM内存调优对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。1.Full GC会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC的次数。2.导致Full GC的原因1)年老代(Tenured)被写满调优时尽量让对象在新生代GC时被回收、让对象在新生代多存活一段...转载 2020-04-04 14:21:38 · 149 阅读 · 0 评论 -
CMS之promotion failed&concurrent mode failure
CMS并行GC收集器是大多数JAVA服务应用的最佳选择,然而, CMS并不是完美的,在使用CMS的过程中会产生2个最让人头痛的问题:promotion failed该问题是在进行Minor GC时,Survivor Space放不下,对象只能放入老年代,而此时老年代也放不下造成的。(promotion failed时老年代CMS还没有机会进行回收,又放不下转移到老年代的对象,因此会出现下一个问...转载 2020-04-04 13:39:23 · 140 阅读 · 0 评论 -
jvm参数调优
JVM的调优主要是内存的调优,主要调两个方面:各个代的大小垃圾收集器选择垃圾回收流程1、新建的对象,大部分存储在Eden中2、当Eden内存不够,就进行Minor GC释放掉不活跃对象;然后将部分活跃对象复制到Survivor中(如Survivor1),同时清空Eden区3、当Eden区再次满了,将Survivor1中不能清空的对象存放到另一个Survivor中(如Survivor2)...原创 2020-03-22 20:22:16 · 206 阅读 · 0 评论 -
常见OOM异常分析(原因+排查解决思路+demo代码+运行结果)
整理了JVM发生OOM异常的几种情况,并分析原因以及解决方案,希望对大家有帮助。Java 堆溢出Java堆用于存储对象实例,只要不断地创建对象,并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象,那么在对象数量到达最大堆的容量限制后就会产生内存溢出异常。Java 堆溢出原因无法在 Java 堆中分配对象应用程序保存了无法被GC回收的对象。应用程序过度使用 fin...转载 2020-03-13 08:51:18 · 3200 阅读 · 0 评论 -
虚拟机工具
1.jps - l显示线程id和执行线程的主类名的全路径2.jps -v显示线程id和执行线程的主类名和JVM配置信息3.jstat -gcGC[可分代查看]jstat -gc 2764 250 20 //2764表示进程id ,250表示250毫秒打印⼀次 ,20表示⼀共 打印20次4.-XX: +HeapDumpOnOutOfMemoryError 参数,可以让虚拟机在 OOM ...原创 2020-02-23 21:51:49 · 92 阅读 · 0 评论 -
系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
1. Full GC次数过多现象相对来说,这种情况是最容易出现的,尤其是新功能上线时。对于Full GC较多的情况,其主要有如下两个特征:线上多个线程的CPU都超过了100%,通过jstack命令可以看到这些线程主要是垃圾回收线程通过jstat命令监控GC情况,可以看到Full GC次数非常多,并且次数在不断增加原因年轻代空间不足老年代空间不足。永生代或者元数据空间不足。Syst...原创 2020-02-21 09:49:27 · 298 阅读 · 0 评论 -
JVM内存模型
1:java概述特点:一处编译随处运⾏管理内存分配和内存回收不容易出现内存泄漏和内存溢出等问题2:JVM生命周期1:启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。2:运行。main()作为该程序初始线程的起点,任何其他线程均由该线程启动。3...原创 2020-02-13 13:35:51 · 136 阅读 · 0 评论 -
JVM垃圾回收
1:JVM生命周期1:启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点。2:运行。main()作为该程序初始线程的起点,任何其他线程均由该线程启动。3:消失。当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类...原创 2020-02-09 23:25:45 · 255 阅读 · 0 评论 -
JDK1.8新特性
概述速度更快 – 红黑树代码更少 – Lambda强大的Stream API – Stream便于并行 – Parallel最大化减少空指针异常 – Optional1:HashMap有人会在问你HashMap的时候会问你JDK1.7和1.8有什么变化;主要还是HashMap中链长度大于8时采取红黑树的结构存储。(1.7的时候是链表结构)红黑树,除了添加,效率高于链表结构。2:...转载 2020-02-08 11:43:19 · 188 阅读 · 0 评论