Java运行时数据区: 主要分为线程共享部分和线程独占部分两个部分 线程共享部分: 所有线程都能访问的内存区域,随着虚拟机或者GC而创建和销毁,主要分为方法区和堆内存 方法区: JVM用来存储加载的类信息,常量,静态变量,编译后的代码等数据 方法区在java虚拟机规范中是一个逻辑区划,不同虚拟机的实 ...
分类:
编程语言 时间:
2020-07-23 22:25:11
阅读次数:
85
G1回收器:区域化分代式 既然我们已经有了前面几个强大的GC,为什么还要发布Garbage First (G1)GC? 原因就在于应用程序所应对的业务越来越庞大、复杂,用户越来越多,没有GC就不能保证应用程序正常进行,而经常造成STW的GC又跟不上实际的需求,所以才会不断地尝试对GC进行优化。G1 ...
分类:
其他好文 时间:
2020-07-23 18:52:31
阅读次数:
77
GC(Garbage Collection)即垃圾回收,本文从文件系统层面分析了 registry GC 原理,相比源码分析更加直观,并提示了一些可能遇到的错误,帮助大家避免踩坑。
分类:
其他好文 时间:
2020-07-23 16:38:03
阅读次数:
80
GC安全点(Safepoint) 程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为“安全点(Safepoint) ” Safe Point的选择很重要,如果太少可能导致GC等待的时间太长,如果太频繁可能导致运行时的性能问题。大部分指令的执行时间都非常短 ...
分类:
其他好文 时间:
2020-07-23 15:46:01
阅读次数:
109
JVM 垃圾收集算法 终于来到了GC收集,这一块比较干。垃圾回收的具体怎么实现,在不同平台的虚拟机可能都有不同。重点说一下 分代收集理论和算法以及发展。 分代收集理论 分代收集理论应该可以算是目前商业虚拟机的垃圾收集器的设计原则。 分代假说: 弱分代假说:绝大多数对象是朝生夕灭 强分代假说:熬过越多 ...
分类:
编程语言 时间:
2020-07-21 14:06:50
阅读次数:
74
判断对象是否存活 引用计数 假如对象被引用,则计数加1,计数为0时回收。但是存在循环引用问题:A引用B,B引用A,导致AB永远不能被回收。 可达性分析(JAVA采用的算法) 从GC Root出发看某个对象是否可达。假如不可达,则回收。 GC Root:存活时间很长的对象,有存在意义的对象。 虚拟机栈 ...
分类:
其他好文 时间:
2020-07-21 11:37:02
阅读次数:
74
新生代GC(Minor GC)指发生在新生代的垃圾收集动作,因为java对象大多都具备朝生夕灭的特性,所以Minor GC非常频繁,一般回收速度也比较快。 老年代GC(MajorGC/Full GC):指发生在老年代的GC,出现了MajorGC,经常会伴随至少一次的Minor GC,MaiorGC的 ...
分类:
其他好文 时间:
2020-07-19 16:25:20
阅读次数:
60
开篇介绍 大家好,我是Java最全面试题库的提裤姐,今天这篇是JavaSE系列的第十八篇,主要总结了JVM中的垃圾回收,在后续,会沿着第一篇开篇的知识线路一直总结下去,做到日更!如果我能做到百日百更,希望你也可以跟着百日百刷,一百天养成一个好习惯。 GC是什么? 为什么要有 GC? Java 提供的 ...
分类:
编程语言 时间:
2020-07-18 22:18:35
阅读次数:
79
System.gc()的理解 手动gc理解不可达对象的回收行为 ...
分类:
其他好文 时间:
2020-07-18 13:36:31
阅读次数:
62
在Linux下安装redis的时候,执行make报 make[1]: *** [adlist.o] 错误,百度后发现是因为 Redis是C实现的,需要gcc进行编译,而我装的centos 7默认是没有安装的,需要自己进行安装。 通过yum进行安装: yum install -y gcc g++ gc ...
分类:
系统相关 时间:
2020-07-18 00:52:08
阅读次数:
73