说到JVM,GC(垃圾回收)是非常重要的机制。

那么首先的问题是:

GC在什么时候会发生?

GC的触发包括两种情况:1.程序调用System.gc()的时候。2.系统自身决定是否需要GC。

系统进行GC的依据:1.eden区满会触发 Minor GC。

2.FULL GC的触发条件:

(1)调用System.gc时,系统建议执行Full GC,但是不必然执行。

(2)老年代内存不足的时候。

(3)方法区内存不足的时候。

第二个问题:GC的对象是什么?

如何判断一个对象会被GC,在JVM中采用的可达性算法。从GC ROOT 出发,如果该对象不可达。则会对该对象进行调用finalize()方法进行释放。

对GC Root搜索不到的对象,可能并不会立即GC,至少需要对该对象进行两次标记。

第三个问题:如何GC。GC的算法大致有四种:标记-清除、复制、标记-整理、分代。整体采用分代算法,

对于新生代,采取的是复制算法。对于老年代采取标记-清除或者标记整理。

疑问:如何优化?优化的方向有些?这些以后会逐渐补充。

GC的时机的更多相关文章

  1. 触发Full GC的时机

    由于Full GC的耗时是Minor GC的十倍左右,所以Full GC的频率设计得比Minor GC低得多.现总结一下触发Full GC的情况. 在那些实现了CMS的比较新的虚拟机中,如果配置了-X ...

  2. Minor GC 和 Full GC的时机

    一.对象何时能够进入老年代 GC年龄判定 每进行一次GC过程,存活的对象的GC年龄都会+1:当对象逃过15次GC,年龄达到15岁时,即可进入老年代 可以通过-XX:MaxTenuringThreshl ...

  3. 不得不知的CLR中的GC

    引言 GC 作为CLR的垃圾回收器,让程序员可以把更多的关注度放在业务上而不是垃圾回收(内存回收)上.其实很多语言也有类似的东东, 如Java也有JIT 等等 GC基本概念 垃圾回收机制的算法有好多种 ...

  4. java基础之 GC

    Java程序员在编码过程中通常不需要考虑内存问题,JVM经过高度优化的GC机制大部分情况下都能够很好地处理堆(Heap)的清理问题.以至于许多Java程序员认为,我只需要关心何时创建对象,而回收对象, ...

  5. Java虚拟机5:Java垃圾回收(GC)机制详解

    哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象.那么如何找到这些对象? 1.引用计数法 这个算法的实现是,给对象中添 ...

  6. C#的GC机制(来自网摘复制,未整理)

    第一个就是很多人用.Net写程序,会谈到托管这个概念.那么.Net所指的资源托管到底是什么意思,是相对于所有资源,还是只限于某一方面资源?很多人对此不是很了解,其实.Net所指的托管只是针对内存这一个 ...

  7. Android GC 那点事

    版权声明:本文由陈昱全原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/170 来源:腾云阁 https://www.qclo ...

  8. 垃圾收集器GC的种类

    堆内存的结构:

  9. 面向GC的Java编程

    转自http://hellojava.info/?p=341 HelloJava微信公众账号网站 面向GC的Java编程 Leave a reply 这是内部一个同事(沐剑)写的文章,国外有一家专门做 ...

随机推荐

  1. 20145214 《网络对抗技术》 MSF基础应用

    20145214 <网络对抗技术> MSF基础应用 1.实验后回答问题--用自己的话解释什么是exploit,payload,encode 如果把MSF比作一把枪的话,payload应该是 ...

  2. Struct2笔记②--完善登陆代码

      上节课的代码 写完整 登陆成功在页面上显示用户名和密码: username:${requestScope.username }<br> password:${requestScope. ...

  3. mongo导入导出命令

    1.导出工具:mongoexport     1.概念:         mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...

  4. React监听窗口变化事件

    功能说明:本例子采用MUI table组件 + React实现. 需求描述:固定表头,列表高度随浏览器窗口的改变而改变.(本例中当窗口高度小于472像素后,便不作限制) 实现简介:1.监听浏览器窗口, ...

  5. 1105 C程序的推导过程

  6. 用vue实现省市县三级联动

    我真的没想到这个会困扰到我.最开始以为,不就是直接找个简单的插件就实现了吗,jquery插件找了几个,都没有达到目的. 需求是这样的: 点击input框,弹出一个popup,然后可以滚动选择省,市,县 ...

  7. WPF string,color,brush之间的转换

    String转换成Color string-"ffffff" Color color = (Color)ColorConverter.ConvertFromString(strin ...

  8. python基础(五)函数

    一.函数概念 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pascal ...

  9. mongodb 下载安装 转

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...

  10. sqlserver 对比数据库表是否完全一致的简单方法

    1. 使用数据库的工具进行处理 tablediff.exe 工具目录 C:\Program Files\Microsoft SQL Server\\COM 工具使用说明 tablediff.exe - ...