运行时数据区,主要包括方法区、虚拟机栈、本地方法栈、堆、程序计数器,该部分内存都是线程隔离的。

然后和其交互的有执行引擎、本地库接口,此部分线程之间是可以共享的。

1、 引用计数算法

给对象添加一个引用计数器,当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1,任何时刻计数器为0的对象就是不可能再被使用的。使用的案例有微软的COM技术、使用ActionScript3的FlashPlayer,Python语言。java语言中没有选用引用计数算法来管理内存,其中最重要的原因是它很难解决对象之间的相互循环引用的问题。

例子:

public class ReferenceCountingGC{public Object instance = null;private static final int _1MB = 1024*1024;/*** 这个成员属性唯一意义就是占点内存,以便能在GC日志中看清楚是否被回收过*/private byte[] bigSize = new byte[2*_1MB];public static void testGC(){ReferenceCountingGC objA = new ReferenceCountingGC();ReferenceCountingGC objB = new ReferenceCountingGC();objA.instance = objB;objB.isstance  = objA;objA =null;objB = null;System.gc();}
}

这两个对象已经不可能再被访问啦,但是他们之间因为相互的引用着对方,所以他们的引用计数都不为0。

2、根搜索算法

通过一系列名为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径成为引用连(Reference Chain),当一个对象到GC Roots没有任何引用连相连时,则证明该对象是不可达的,则可以被判定为是可回收的对象。

JAVA语言中,可以作为GC Roots的对象包括下面几种:

1)虚拟机栈(栈帧中的本地变量表)中的引用的对象。

2)方法区中的类静态属性引用的对象。

3)方法区中常量引用的对象。

4) 本地方法栈中JNI(即一般说的Native方法)的引用的对象。

转载于:https://www.cnblogs.com/Eunice-mogu/p/5315450.html

深入理解java虚拟机---读后笔记(垃圾回收)相关推荐

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

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

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

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

  3. 学习笔记【Java 虚拟机②】垃圾回收

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 总目录 学习笔记[Java 虚拟机①]内存结构 学习笔记[Java 虚拟机②]垃圾回收 学习笔记[Java ...

  4. java虚拟机多久触发垃圾回收_每日一问:讲讲 Java 虚拟机的垃圾回收

    昨天我们用比较精简的文字讲了 Java 虚拟机结构,没看过的可以直接从这里查看: 每日一问:你了解 Java 虚拟机结构么? 今天我们必须来看看 Java 虚拟机的垃圾回收算法是怎样的.不过在开始之前 ...

  5. Java虚拟机之垃圾回收详解一

    Java虚拟机之垃圾回收详解一 Java技术和JVM(Java虚拟机) 一.Java技术概述: Java是一门编程语言,是一种计算平台,是SUN公司于1995年首次发布.它是Java程序的技术基础,这 ...

  6. 深入理解JVM虚拟机之垃圾回收

    深入理解JVM虚拟机之垃圾回收 什么叫做垃圾? 没有引用指向得对象都称为垃圾,好比如我们放风筝,哪些断了线得风筝都称之为垃圾. JVM怎么查找这些垃圾 一般又两种算法,1.可达性分析.2.引用计数 引 ...

  7. 浅析Java虚拟机的垃圾回收机制(GC)

    目录 一.垃圾回收机制(Garbage Collection) 二.对象回收的时机 引用计数法 可达性分析算法 三.垃圾回收算法 标记-清除算法 标记-复制算法 标记-整理算法 新生代.老年代.永久代 ...

  8. ReviewForJob——java虚拟机的垃圾回收策略(个人总结)

    理解jvm的垃圾回收策略,需要解决以下3个问题 问题1:哪些内存需要回收? 问题2:什么时候进行回收? 问题3:怎样来回收? [解决问题1]哪些内存需要回收? jvm的内存区域有5大块: 1)程序计数 ...

  9. java虚拟机、垃圾回收、多线程

    虚拟机,我们都知道Java程序运行在虚拟机上,虚拟机又和操作系统打交道,最终通过二进制指令操纵电子电路运行.完成数据的读取,存储,运算和输出. 虚拟机在加载.class文件的时候,会在内存开辟一块区域 ...

  10. Java虚拟机:垃圾回收机制与垃圾收集器

    一.垃圾回收机制: 1.垃圾回收的过程: JVM内存区域的程序计算器,虚拟机栈.本地方法栈的生命周期是和线程同步的,随着线程的销毁而自动释放内存,所以只有堆和方法区需要GC,方法区主要是针对常量池的回 ...

最新文章

  1. netflix 模式创新_创新设计模式:单例模式
  2. matlab中的导函数驻点,Matlab用导数作定性分析
  3. JavaMonitor 监视器
  4. 25 WM配置-策略-入库策略5-定义托盘策略P(Pallet Strategy)
  5. java String和StringBuilder的执行效率
  6. 华夏银行招聘计算机笔试题,2019华夏银行招聘结构化面试试题及答案
  7. Linux安装IDA神器
  8. 摩托车电动化,一场千亿美元的新战争
  9. 计算机一级ms office选择题题库,全国计算机等级考试一级MSOFFICE选择题题库.doc
  10. android投屏到web,网络视频投屏Web Video Cast v5.2.0 for Android 解锁高级版
  11. 关于 WMV、WMA、ASF、ASX 等格式和 Windows Media Player 的说明
  12. 一般期刊发表要求如何掌握
  13. 利用ArcGIS创建注记层制作方法及注意事项
  14. Python从zip文件里导入包
  15. pytest文档56-插件打包上传到 pypi 库
  16. 磁共振功能成像BOLD-fMRI原理
  17. iOS 14摊上事:新隐私功能遭欧洲16家广告协会反对
  18. python中beautifulsoup是什么,Python Beautiful Soup简介
  19. STM32MP157驱动开发——4G通信模块驱动
  20. windows命令----netstat命令

热门文章

  1. 【原创】RabbitMQ 之 Access Control(翻译)
  2. vscode安装设置go
  3. Effective_STL 学习笔记(四十三) 尽量用算法调用代替手写循环
  4. 软件测试面试必备的一些基础理论概念
  5. 我的jQuery动态表格插件二
  6. Tokyo Tyrant(TTServer)系列(三)-Memcache协议
  7. 配置MySQL数据库单机多实例
  8. 【Python之旅】第七篇(二):Redis使用基础
  9. 何时开始phonics学习及配套阅读训练zz
  10. Centos6.3下apache+svn部署web版本同步