![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 81
o六耳猕猴桃o
这个作者很懒,什么都没留下…
展开
-
新世代垃圾回收器
新世代垃圾回收器(学习笔记)7种垃圾回收器的变化情况GC仍然处于飞速发展之中,目前的默认选项G1 GC在不断的进行改进,很多我们原来认为的缺点,例如串行的Full GC、Card Table扫描的低效等,都已经被大幅改进,例如,JDK10以后,Fu11GC已经是并行运行,在很多场景下,其表现还略优于ParallelGC的并行Ful1GC实现。即使是SerialGC,虽然比较古老,但是简单的设计和实现未必就是过时的,它本身的开销,不管是GC相关数据结构的开销,还是线程的开销,都是非常小的,所以随着云计原创 2021-03-08 22:22:16 · 181 阅读 · 0 评论 -
JVM-GC日志分析
GC日志分析(学习笔记)查看GC的常用参数参数含义备注-XX:+PrintGC输出GC日志类似-verbose:gc,JDK9中被替换为-Xlog:gc-XX:+PrintGCDetails输出GC详细日志JDK9中被替换为-Xlog:gc*-XX:+PrintGCTimeStamps输出GC的时间戳以基准时间的形式,JDK9中为-Xlog:gc(*)::uptime(默认打开)-XX:+PrintGCDateStamps输出GC的时间戳以日期的形原创 2021-03-08 21:41:56 · 7336 阅读 · 0 评论 -
G1垃圾回收器
G1垃圾回收器(学习笔记)G1的问世为什么要推出G1?由于应用程序所应对的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证应用程序的正常运行,而经常造成STW的GC有跟不上实际的需求,所以才会不断对GC进行优化。G1(Garbage-First)垃圾回收器是在Java7 update4之后引入的一个新的垃圾回收器,是当今收集器技术发展的最前沿成果之一。与此同时,为了适应现在不断扩大的内存和不断增加的处理器数量,进一步降低暂停时间(pause time),同时兼顾良好的吞吐量。官方给G1设定原创 2021-03-08 11:36:33 · 165 阅读 · 0 评论 -
CMS垃圾回收器
CMS垃圾回收器简介CMS全称Concurrent-Mark-Sweep。在JDK1.5时期,HotSpot推出了一款在强交互应用中有划时代意义的垃圾收集器,这款收集器是HotSpot中第一款真正意义上的并发收集器,它第一次实现了让垃圾收集线程和用户线程同时工作。CMS的垃圾收集算法采用标记-清除算法,也会STW。CMS作为老年代垃圾收集器,却无法与新生代中收集器Parallel Scavenge配合工作。G1出现之前,CMS的使用非常广泛。主要环节CMS的整个过程分为4个阶段:初始标记、并原创 2021-03-05 17:35:57 · 146 阅读 · 0 评论 -
Parallel Scavenge垃圾回收器
Parallel与Parallel Old收集器(学习笔记)简介全称为Parallel Scavenge收集器。HotSpot中,除了ParNew收集器是基于并行回收以外,Parallel Scavenge同样也采用了复制算法、并行回收和STW机制。Parallel Scavenge的目标是达到一个可控制的吞吐量。自适应调节策略也是Parallel Scavenge和ParNew的一个重要区别。高吞吐量则可以高效利用CPU时间,尽快完成运算任务,主要适合在后台运算而不需要太多交互的场景。批量原创 2021-03-04 21:35:29 · 561 阅读 · 1 评论 -
ParNew垃圾回收器
ParNew垃圾回收器(学习笔记)基本概念ParNew收集器是Serial收集器的多线程版本。Par是Parallel的缩写New表示只能处理新生代ParNew收集器再新生代中仍然采用复制算法、STW机制。ParNew是很多JVM运行再Server端的默认垃圾回收器。对于新生代,回收器次数频繁,使用并行方式高效。对于老年代,回收次数少,使用串行节省资源(这CPU切换线程)。ParNew一定比Serial更好吗?多CPU场景下,ParNew可以充分利用多CPU、多核心的物理硬件优势,原创 2021-03-04 20:21:20 · 200 阅读 · 1 评论 -
Serial与Serial Old垃圾回收器
Serial与Serial Old垃圾回收器(学习笔记)Serial收集器Serial收集器是最基本、你是最悠久的垃圾收集器。JDK1.3之前回收新生代的唯一选择。Serial收集器是HotSpot中Client模式下默认的新生代垃圾收集器。Serial收集器采用复制算法、串行回收、STW机制的方式进行内存回收。Serial Old收集器同时,除了新生代之外,Serial收集器还提供用于执行老年代内存回收的Serial Old收集器。Serial Old收集器采用标记-压缩算法、串行回收、ST原创 2021-03-04 17:33:34 · 315 阅读 · 1 评论 -
JVM-垃圾回收器分类
垃圾回收器分类(学习笔记)GC分类垃圾收集器没有在规范中进行过多规定,可以由不同厂商、不同版本的JVM来实现。串行回收与并行回收串行回收是指在同一时间段内只允许由一个CPU用于执行垃圾回收操作,此时工作线程暂停,直到垃圾回收工作结束。在诸如单CPU处理器或者较小的引用内存的场合,串行回收器的性能可以超过并行回收器和并发回收器。所以,串行回收模式某人被应用在客户端的Client模式下的JVM中在并发能力比较强的CPU上,并行回收器的停顿时间要短于串行回收器并行回收可以使用多个CPU同时执行垃原创 2021-03-02 22:06:55 · 142 阅读 · 1 评论 -
JVM-垃圾回收相关概念
垃圾回收相关概念System.gc() 的理解在默认情况下,通过System.gc()或者Runtime.getRuntime.gc()的调用,会显示除法Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。然后System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。一般情况下,垃圾回收是自动进行的,无需手动触发。在一些特殊情况下,如我们正在编写一个性能测试,我们可以在测试之前调用System.gc()。理解不可达对象的回收例子1:public void原创 2021-03-01 22:23:36 · 130 阅读 · 0 评论 -
JVM-垃圾回收算法
垃圾回收算法(学习笔记)垃圾回收算法概述垃圾回收算法可以分为两个阶段:标记阶段和清除阶段。标记阶段:区分内存中存活和死亡的对象,并对死亡的对象进行标记清楚阶段:将标记的对象清除出内存 死亡的对象是指没有被任何存活的对象所引用的对象标记阶段算法:引用计数算法可达性分析算法清除阶段算法:标记-清除算法复制算法标记-压缩算法引用计数算法对于每一个对象,都保留一个整形的引用计数器属性。用于记录对象被引用的情况。例如:对于一个对象A,当有其他对象引用A时,A的引用计数器就原创 2021-02-27 16:51:07 · 134 阅读 · 1 评论 -
JVM-垃圾回收概述
JVM垃圾回收什么是垃圾垃圾是指在运行程序中没有任何指针指向的对象。注意:基本数据类型不会成为垃圾,因为它们会随着出栈而消失。为什么需要GC如果不进行垃圾回收,内存迟早都会被消耗完除了释放没用的对象,垃圾回收也可以清除内存内的记录碎片,这样便于JVM将内存整理出的内存分配给新的对象应用程序说应付的业务越来越大,没有GC就不能保证应用程序的正常进行。而经常造成STW的GC有跟不上实际的需求,因此需要不断地优化GC早期的垃圾回收开发人员可以使用new关键字进行内存申请,并使用delete关原创 2021-02-26 17:03:17 · 99 阅读 · 0 评论