摘要: 垃圾回收器的新发展 GC仍然处于飞速发展之中,目前的默认选项G1 GC在不断的进行改进,很多我们原来认为的缺点,例如串行的Full GC、Card Table扫描的低效等,都已经被大幅改进,例如,JDK 10以后,Fu1l GC已经是并行运行,在很多场景下,其表现还略优于Parallel GC的并行 阅读全文
posted @ 2020-07-23 16:27 liuyanntes'cnblogs 阅读(1399) 评论(0) 推荐(5) 编辑
摘要: 通过阅读GC日志,我们可以了解Java虛拟机内存分配与回收策略。内存分配与垃圾回收的参数列表 一XX: +PrintGC 输出Gc日志。类似: 一verbose:gc 一XX: +PrintGCDetails 输出GC的详细日志 一XX: +PrintGCTimeStamps 输出GC的时间戳(以基 阅读全文
posted @ 2020-07-23 16:20 liuyanntes'cnblogs 阅读(1095) 评论(0) 推荐(0) 编辑
摘要: G1回收器:区域化分代式 既然我们已经有了前面几个强大的GC,为什么还要发布Garbage First (G1)GC? 原因就在于应用程序所应对的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证应用程序正常进行,而经常造成STW的GC又跟不上实际的需求,所以才会不断地尝试对GC进行优化。G1 阅读全文
posted @ 2020-07-23 15:02 liuyanntes'cnblogs 阅读(3921) 评论(2) 推荐(6) 编辑
摘要: GC逻辑分类 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。 按线程数分(垃圾回收线程数) 可以分为串行垃圾回收器和并行垃圾回收 阅读全文
posted @ 2020-07-23 12:13 liuyanntes'cnblogs 阅读(5296) 评论(0) 推荐(5) 编辑
摘要: JVM引用 我们希望能描述这样一类对象: 当内存空间还足够时,则能保留在内存中;如果内存空间在进行垃圾收集后还是很紧张,则可以抛弃这些对象。 -【既偏门又非常高频的面试题】强引用、软引用、弱引用、虚引用有什么区别?具体使用.场景是什么? 在JDK 1.2版之后,Java对引用的概念进行了扩充,将引用 阅读全文
posted @ 2020-07-23 11:44 liuyanntes'cnblogs 阅读(1519) 评论(0) 推荐(0) 编辑
摘要: GC安全点(Safepoint) 程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为“安全点(Safepoint) ” Safe Point的选择很重要,如果太少可能导致GC等待的时间太长,如果太频繁可能导致运行时的性能问题。大部分指令的执行时间都非常短 阅读全文
posted @ 2020-07-23 10:25 liuyanntes'cnblogs 阅读(1713) 评论(0) 推荐(1) 编辑
摘要: 程序的并行和并发 程序的并发(Concurrent) 在操作系统中,是指一个时间段中有几个程序都处于己启动运行到运行完毕之间,且这几个程序都是在同一个处理器_上运行。 并发不是真正意义上的“同时进行”,只是CPU把一个时间段划分成几个时间片段(时间区间),然后在这几个时间区间之间来回切换,由于CPU 阅读全文
posted @ 2020-07-23 10:15 liuyanntes'cnblogs 阅读(1135) 评论(0) 推荐(0) 编辑
摘要: Stop The World Stop一the一World,简称STW,指的是Gc事件发生过程中,会产生应用程序的停顿。停顿产生时整个应用程序线程都会被暂停,没有任何响应,有点像卡死的感觉,这个停顿称为STW。. 举例: ➢可达性分析算法中枚举根节点(GC Roots)会导致所有Java执行线程停顿 阅读全文
posted @ 2020-07-23 09:54 liuyanntes'cnblogs 阅读(892) 评论(0) 推荐(0) 编辑