一、JVM架构图分析 下图:参考网络+书籍,如有侵权请见谅 一、要回收哪些区域在JVM内存模型中,有三个是不需要进行垃圾回收的:程序计数器、JVM栈、本地方法栈。因为它们的生命周期是和线程同步的,随着线程的销毁,它们占用的内存会自动释放,所以只有方法区和堆需要进行GC二、如何判断对象是否存活1、引用 ...
分类:
编程语言 时间:
2018-11-08 22:01:02
阅读次数:
216
垃圾回收概念和其算法 谈到垃圾回收(Garbage Collection)GC,需要先澄清什么是垃圾,类比日常生活中的垃圾,我们会把他们丢入垃圾箱,然后倒掉。GC中的垃圾,特指存于内存中、不会再被使用的对象,儿回收就是相当于把垃圾“倒掉”。垃圾回收有很多中算法:如 引用计数法、标记压缩法、复制算法、 ...
分类:
编程语言 时间:
2018-10-18 22:09:24
阅读次数:
253
https://www.cnblogs.com/suolu/p/6654236.html 基本概念 GC复制算法将堆分成From和To两个内存块,当From被占满时GC将From中的存活对象复制到To中,同时将From和To交换。 通过递归遍历GC root(即采用深度优先)复制存活对象,对于已经复 ...
分类:
编程语言 时间:
2018-10-07 18:59:43
阅读次数:
160
目录 GC的概念 回收算法 引用计数算法:(老牌垃圾回收算法。无法处理循环引用,没有被Java采纳) 1、引用计数算法的概念: 根搜索算法 标记-清除算法 复制算法:(新生代的GC) 标记-整理算法:(老年代的GC) 分代收集算法:(新生代的GC+老年代的GC) Minor GC和Full GC 可 ...
分类:
其他好文 时间:
2018-09-11 21:17:02
阅读次数:
157
任何语言在运行过程中都会创建对象,也就意味着需要在内存中为这些对象在内存中分配空间,在这些对象失去使用的意义的时候,需要释放掉这些内容,保证内存能够提供给新的对象使用。对于对象内存的释放就是垃圾回收机制,也叫做gc,对于java开发者来说gc是一个双刃剑 我们这里找了两张搞笑图片分别来表示c语言的垃 ...
分类:
编程语言 时间:
2018-09-05 21:50:05
阅读次数:
155
GC算法:引用计数法(Reference Counting)、标记清除法(Mark-Sweep)、复制算法(Copying)、标记压缩法(Mark-Compact)、分代算法(Generational Collecting)及分区算法(Region) ...
分类:
编程语言 时间:
2018-09-03 12:08:07
阅读次数:
152
程序计数器、虚拟机栈、本地方法栈随线程而生、随线程而灭 堆和方法区 一个接口的多个实现类所需的内存不一样,一个方法的多个执行分支所需的内存不一样,在程序执行过程中动态地分配和回收内存 (1)引用计数法 引用计数器,有一个地方引用,计数器的值加一 很难解决对象之间循环引用的问题 (2)可达性分析 GC ...
分类:
其他好文 时间:
2018-08-22 11:09:12
阅读次数:
162
为每个对象生命周期不一样,jvm在做内存管理的时候,就帮我们分成了三个区域: 1. 新生代(回收频率高) 新生和老年默认大小比例为1:2 2. 老年代(回收频率低) 最好所有的对象都不要进入老年代,最好新生代能及时回收空对象释放空间供下次使用。 3. 永久代(一般放类的加载信息,常量,静态变量)。 ...
分类:
其他好文 时间:
2018-08-12 18:51:16
阅读次数:
184
Java GC垃圾收集器 概述 这么判断对象已死 引用计数法 可达性分析算法 垃圾回收算法 标记 清除算法 如图 复制算法 如图: 标记 整理算法 如图 分代收集算法 ...
分类:
编程语言 时间:
2018-07-31 00:37:50
阅读次数:
153
找到了 "垃圾" 对象,如何标记 "垃圾" 对象? 标记-清除算法 先标记所有需要回收的对象,标记完成后统一回收被标记了的对象。(最基础的算法,其它算法在这个算法基础上改进的) 缺点:标记和清除的效率不高,标记和清除后会产生大量的内存碎片(空间问题) 复制算法 将内存按容量划分两块大小相等的内存块, ...
分类:
编程语言 时间:
2018-07-25 17:42:09
阅读次数:
133