【深入理解Java虚拟机读书笔记】垃圾收集器与内存分配策略
垃圾收集器与内存分配策略 垃圾收集器主要回收的内存区域是堆和方法区 判断对象是否已死 引用计数算法 通过计算一个对象是否被其他对象所引用来判断该对象是否可以被回收,Java中不采用该方法,存在循环引用问题(a->b, b->a,此时a,b均不会被回收) 可达性分析算...
《深入理解Java虚拟机》(三)垃圾收集器与内存分配策略
垃圾收集器与内存分配策略 详解 3.1概述 本文参考的是周志明的 《深入理解Java虚拟机》第三章 ,为了整理思路,简单记录一下,方便后期查阅。 3.2对象已死吗 在垃圾收集器进行回收前,第一件事就是确定这些对象哪些还存活,哪些已经死去。 3.2.1引用计数算法 在对象中添加一个引用计数器,每当有一...
《深入理解Java虚拟机》读书笔记——垃圾收集器与内存分配策略
一、判断对象是否存活的算法: 引用计数算法。 给对象添加一个引用计数器,每一个地方引用它时,计数器值加1;当引用失效时,计数器值减1;任何时刻计数器为0的对象就是不可能再被使用的。 优缺点:实现简单,效率高;但很难解决对象之间相互循环引用的问题。 可达性分析算法 通过一系列的称...
《深入理解Java虚拟机》第3章 垃圾收集器与内存分配策略
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。3.1 概述说起垃圾收集(Garbage Collection,GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久远,1960年诞生于MIT的Lisp是第...
深入理解Java虚拟机学习笔记——二、垃圾收集器与内存分配策略
1、对象存活判定算法 引用计数算法 给对象添加一个引用计数器,当有其他对象引用它时,计数器加1;当引用失效时,计数器减1。任何时刻计数器为0的对象就是不可能在被使用的。引用计数算法实现简单,判定效率也很高,但是很难解决对象间相互循环引用的问题。 可达性分析算法 通过一系...
[置顶] 《深入理解java虚拟机》读书笔记——垃圾收集器
注:转载自:http://www.jianshu.com/p/50d5c88b272d 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般...
读 - 深入理解java虚拟机 - 笔记(六-4) - 垃圾收集器和内存分配策略(3章)-内存分配
Java所提倡的自动内存管理可以自动化解决两个问题: 1.给对象分配内存。 2.回收分配给对象的内存。 关于内存的回收,上一篇已经讲过了,这一篇讲一讲内存的分配。 1.对象优先在Eden分配。 大多数情况下,对象在新生代Eden中分配(关于Eden区,上一篇已经大致介绍了),当Eden区没有足够空间...
深入理解jvm虚拟机读书笔记-垃圾收集器与内存分配策略(二)
垃圾收集算法-标记清除算法 标记清除算法是最基础的收集算法。算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记过程完成后统一回收所有被标记的对象。后续的收集算法都是基于这种思路对其不足进行改善。 主要有两个不足点: 一个是效率,标记和清除两个过程的效率都不高; 另一个是空间问...
读 - 深入理解java虚拟机 - 笔记(六-1) - 垃圾收集器和内存分配策略(3章)-对象已死吗
虚拟机这本书我还只能停留在翻译的边缘,没有能力去结合实际工作经验分享自己的体会,因为自身的编程工作仍然是业务驱动,并且也没有很大的并发量,这是致命的,自己根本碰不到需要深入了解虚拟机去解决问题的程度,也是很想去接触这种项目,但是高大上的公司又没有机会,只能是读书去了解知识了。 判断对象是否已死。主...
《深入理解java虚拟机》学习-第三章-垃圾收集器
1.GC需要完成的三件事情: ① 哪些内存需要回收? ② 什么时候回收? ③ 如何回收? 2.程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭,所以这几个区域不需要过多考虑回收问题,因为线程结束时,内存自然就跟着回收了,而java堆和方法去不同; 3.在堆里存放几乎java中所有对象实...
第3章 垃圾收集器与内存分配策略--《深入理解 Java 虚拟机》笔记
垃圾回收器(Garbage Collection,GC)。三件事:哪些内存需要回收?什么时候回收?如何回收?程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行着出栈和入栈操作。 堆中几乎存放着Java世界中所有对象实例,垃圾收集器在对堆...
深入理解JVM虚拟机学习笔记(二)垃圾收集器与垃圾收集算法
在进行垃圾收集之前得先确定哪些对象是死的哪些对象是活的? 引用计数算法 给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时计数器值减1,任何时刻,计数器都为0的对象就是不可能再去使用的。 但是Java语言没有使用引用计数法来管理内存,其中主要原因是很难解决对象之间...
深入理解Java 虚拟机(周志明)笔记(五)——垃圾收集器(四)
5.1.4.查看GC日志 1.虚拟机提供了 -XX:+PrintGCDetails 参数,告诉虚拟机在发生垃圾收集行为时打印内存回收日志,并且在进程退出的时候输出当前的内存各区域分配情况。 2.每个收集器的日志格式有所不同,但是虚拟机设计者为了方...
JVM垃圾回收算法和收集器
一. JVM垃圾回收算法 1.引用计数器算法: 引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象不再被使用,是“垃圾”了。 引用计数器实现简单,效率高;但是(1)不能解决循环引用问问题(A对象引用B对...
JVM笔记(二) 垃圾收集器(1)
垃圾收集器 主要通过阅读《深入了解Java虚拟机》(周志明 著)和网络资源汇集而成,为本人学习JVM的笔记。同时,本文理论基于JDK 1.7版本,暂不考虑 1.8和1.9 的新特性,但可能初略提到。 一、GC概念 垃圾收集(GC,Garbage Collection),就是在动态分配内存后...
深入理解JAVA虚拟机学习笔记6——七种垃圾收集器介绍和对比
本来这一篇应该是和大家分享以下HotSpot的算法实现的,但是有部分内容存在一些疑问,还需进一步研究一下,今天就简单介绍一下几种不同的垃圾收集器。 开始之前有几点需要提前介绍一下。 第一点,书中提到了一个词,“Stop The World”——即当进行垃圾收集的时候,必须暂停其它所有的工作线程。 第...
jvm系列(三):java GC算法 垃圾收集器
GC算法 垃圾收集器概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的...
JVM(3):Java GC 算法垃圾收集器
个引用计数属性,新增一个引用时计数加1,引用释放时计数减1,计数为0时可以回收。此方法简单,无法解决对象相互循环引用的问题。 可达性分析(Reachability Analysis):从GC Roots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GC Roots没有任何引用链相连时,则证...
JVM垃圾收集算法及垃圾收集器
今天来总结一下最近学习到的JVM垃圾收集算法和垃圾收集器。原来以为这部分知识,对于一个Java程序员的用处不大,可是如果你的运营Web项目,出现了性能问题,那么这部分知识可以帮助你从运维的角度来优化你的项目。 首先,先讲一下JVM的垃圾收集算法,因为这是学习垃圾收集器的前堤。各种垃圾收...
JVM学习笔记 -- 垃圾收集器
垃圾收集(Garbage Collection,GC)需要考虑3件事: 1、哪些内存需要回收 2、什么时候回收 3、如何回收 Java内存运行时区域中,程序计数器、虚拟机栈、本地方法栈3个区域生命周期与线程相同,这几个区域的内存分配和回收都具备确定性,不需要考虑回收的问题,在方法结束或线程结束后内存...