---恢复内容开始---

程序计数器、虚拟机栈、本地方法栈,这三个区域随着线程生,随着线程死。重复入栈出栈,还有基本确定 编译后 各区域所需要的内存大小是确定的。所以这部分回收不需要过多考虑。

主要回收对象为堆、方法区。java动态原则,大多数对象都是运行期间才会被加载的,所以堆上的容量是动态(分配和回收)变化的。

1.堆上回收内存(回收已死对象)

怎么判断已死?

每个类都有一个finalize()方法,,jvm判断一个对象是否死亡,先根搜索算法筛一遍,标记出不可达对象,,并放在一个队列中,由一个线程去逐个执行finalize()方法。若某个对象重写了finalize()方法,并且在此方法中成功讲自己连接出去了,,那就抹去标记,暂留狗命。若没有重写或没有成功推出自己,则只有等死。

finalize()方法,在一次次回收中,,只会被系统调用一次。(?)

finalize()一般被用在对象快死了,,释放被其占用的资源。但是 try finally  好像也可以。

2.方法区回收

这部分是有回收的,废弃的常量和 无用的类。

3.垃圾回算法

3.1标记回收

先标记再回收:可能产大量碎片,,没有可以被分配的连续内存,效率也底。

3.2复制算法

两块一样大的内存,,一块用的差不多的了,,将上面活着的对象复制到另一块上,,原来的清空。

3.3标记-整理算法

让存活的对象自己想某个区域”靠近“,,然后回收这个区域端边接意外的内存。

3.4分代收集算法

4.垃圾收集器

http://www.cnblogs.com/zuoxiaolong/p/jvm8.html

5.内存分配与回收策略

https://www.cnblogs.com/xiaoxi/p/6557473.html

转载于:https://www.cnblogs.com/haerwang/p/10030718.html

jvm垃圾回收器(《深入理解java虚拟机》)相关推荐

  1. 深入理解Java虚拟机:Java垃圾回收器

    本篇内容包括:7 种 Jvm 垃圾回收器的介绍.对比 以及 对应的 Jvm 参数设置,这 7 种包括了:Serial.ParNew 以及 Parallel Scavenge 三种新生代回收器 和 :S ...

  2. 深入理解Java虚拟机-垃圾回收器与内存分配策略

    本博客主要参考周志明老师的<深入理解Java虚拟机>第二版 读书是一种跟大神的交流.阅读<深入理解Java虚拟机>受益匪浅,对Java虚拟机有初步的认识.这里写博客主要出于以下 ...

  3. 深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解

    一:概述 说起垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来.在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释 ...

  4. 【深入理解Java虚拟机】读后感:JVM垃圾回收小结

    JVM垃圾回收小结 1.GC 问题侧重点 虚拟机栈.本地方法栈.程序计数器随线程而生,随线程而灭.栈中的栈帧随方法的进入和退出而有条不紊地执行着出栈与入栈操作,每个栈帧分配多少内存基本是在类结构确定下 ...

  5. 深入理解java虚拟机 - jvm高级特性与最佳实践(第三版)_JVM虚拟机面试指南:年薪30W以上高薪岗位需求的JVM,你必须要懂!...

    JVM的重要性 很多人对于为什么要学JVM这个问题,他们的答案都是:因为面试.无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪 ...

  6. 深入理解java虚拟机之——垃圾回收(垃圾判断,垃圾收集算法,垃圾收集器)

    java与C++之间有一道动态内存分配和垃圾收集的"墙",墙里面的人想出来,墙外边的人想进去,或许只有骑在墙上才能清楚的了解,墙内墙外都是牢笼. 上面一句出自<深入理解jav ...

  7. 《深入理解java虚拟机》(Jvm)一篇概括

    目录 1.Java内存区域与内存溢出异常 2.垃圾收集器与内存分配策略 3.虚拟机性能监控与故障处理工具 4.调优案例分析与实战 5.类文件结构 6.虚拟机类加载机制 7.虚拟机字节码执行引擎 8.类 ...

  8. 深入理解Java虚拟机垃圾回收机制

    文章目录 什么是垃圾回收 哪些内存需要被回收?什么时候回收?如何回收? 哪些内存需要被回收?什么时候回收? 引用计数算法 可达性分析算法 如何回收?(垃圾收集算法) 标记-清除算法 复制算法 标记-整 ...

  9. 《深入理解Java虚拟机》阅读——垃圾回收机制

    <深入理解Java虚拟机>阅读--垃圾回收机制 前言 why--为什么需要垃圾回收 what--垃圾回收做些什么 where--去哪里回收垃圾 how--垃圾回收是怎么做的 垃圾是否要回收 ...

  10. 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)读书笔记

    前言 我在读 深入理解java虚拟机 这本书,把整体其中的关键点标记了,希望自己对它有个不一样的理解,也希望大家能看看这本写的很好的书 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) pd ...

最新文章

  1. 阿里程序员连续两次绩效3.25!大老板威胁要开除他!还不给赔偿金!问大家该如何维权?...
  2. 批量obj格式直接转gltf
  3. Ionic中自定义公共模块以及在自定义模块中使用ionic内置模块
  4. mysql group_concat时间用法
  5. 【亲身经验】如何在 6 个月内成为“微软 MVP”
  6. tdd java_Java TDD简介–第2部分
  7. ai建立使用图案_ai自定义图案的方法详解步骤图
  8. python的pip_Python3中安装pip3
  9. pandas.DataFrame.rank
  10. linux新建 txt文件,通过Linux终端快速创建文本文件的3种方法
  11. 硬核干货 | 人大金仓数据库产品体系合集
  12. Open the World 丨 COSCon'22志愿者招募正式启动
  13. 经典游戏江湖医馆文字版
  14. 像哆啦A梦懂大雄一样懂客户,我们也会拥有百宝箱
  15. 2017第二届上海DAC体验
  16. 数据可视化笔记4 结构数据的可视化图形
  17. c++重写卷积网络的前向计算过程,完美复现theano的测试结果
  18. Java枚举类型介绍
  19. Ansible企业运维实例(三)—批量硬盘初始化
  20. 正则表达式生成器,测试器(附C#代码)

热门文章

  1. AJAX推送与拉取方式的比较
  2. jquery键盘事件
  3. OpenCV中XML文件和YAML文件的读写
  4. 模态框之Uncaught Error: Syntax error, unrecognized expression:
  5. 区块链教程Fabric1.0源代码分析Tx(Transaction 交易)一
  6. linux命令之awk命令
  7. sqlserver 性能问题
  8. python 回溯法 子集树模板 系列 —— 5、取物搭配问题
  9. 【Unity笔记】使用协程(Coroutine)异步加载场景
  10. 一些达成共识的JavaScript编码风格约定