什么是GC,GC就是垃圾回收机制:在系统运行过程中,会产生一些无用的对象,这些对象占据着一定的内存,如果不对这些对象清理回收无用对象的内存,可能会导致内存的耗尽,所以垃圾回收机制回收的是内存。同时GC回收的是堆区和方法区的内存。

JVM回收特点:(stop-the-world)当要进行垃圾回收时候,不管何种GC算法,除了垃圾回收的线程之外其他任何线程都将停止运行。被中断的任务将会在垃圾回收完成后恢复进行。GC不同算法或是GC调优就是减少stop-the-world的时间。à(为何非要stop-the-world),就像是一个同学的聚会,地上有很多垃圾,你去打扫,边打扫边丢垃圾怎么都不可能打扫干净的哈。当在垃圾回收时候不暂停所有的程序,在垃圾回收时候有new一个新的对象B,此时对象A是可达B的,但是没有来及标记就把B当成无用的对象给清理掉了,这就会导致程序的运行会出现错误。

Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() ,但JVM可以屏蔽掉显示的垃圾回收调用。
垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低优先级的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。在Java诞生初期,垃圾回收是Java最大的亮点之一,因为服务器端的编程需要有效的防止内存泄露问题,然而时过境迁,如今Java的垃圾回收机制已经成为被诟病的东西。移动智能终端用户通常觉得iOS的系统比Android系统有更好的用户体验,其中一个深层次的原因就在于Android系统中垃圾回收的不可预知性。

补充:垃圾回收机制有很多种,包括:分代复制垃圾回收、标记垃圾回收、增量垃圾回收等方式。标准的Java进程既有栈又有堆。栈保存了原始型局部变量,堆保存了要创建的对象。Java平台对堆内存回收和再利用的基本算法被称为标记和清除,但是Java对其进行了改进,采用“分代式垃圾收集”。这种方法会跟Java对象的生命周期将堆内存划分为不同的区域,在垃圾收集过程中,可能会将对象移动到不同区域:
- 伊甸园(Eden):这是对象最初诞生的区域,并且对大多数对象来说,这里是它们唯一存在过的区域。
- 幸存者乐园(Survivor):从伊甸园幸存下来的对象会被挪到这里。
- 终身颐养园(Tenured):这是足够老的幸存对象的归宿。年轻代收集(Minor-GC)过程是不会触及这个地方的。当年轻代收集不能把对象放进终身颐养园时,就会触发一次完全收集(Major-GC),这里可能还会牵扯到压缩,以便为大对象腾出足够的空间。

与垃圾回收相关的JVM参数:

  • -Xms / -Xmx — 堆的初始大小 / 堆的最大大小
  • -Xmn — 堆中年轻代的大小
  • -XX:-DisableExplicitGC — 让System.gc()不产生任何作用
  • -XX:+PrintGCDetails — 打印GC的细节
  • -XX:+PrintGCDateStamps — 打印GC操作的时间戳
  • -XX:NewSize / XX:MaxNewSize — 设置新生代大小/新生代最大大小
  • -XX:NewRatio — 可以设置老生代和新生代的比例
  • -XX:PrintTenuringDistribution — 设置每次新生代GC后输出幸存者乐园中对象年龄的分布
  • -XX:InitialTenuringThreshold / -XX:MaxTenuringThreshold:设置老年代阀值的初始值和最大值
  • -XX:TargetSurvivorRatio:设置幸存区的目标使用率


什么是GC对于GC垃圾回收机制的理解相关推荐

  1. GC garbage collection 垃圾回收机制

    GC  garbage collection   垃圾回收机制 1 找到内存空间中的垃圾. 2.回收垃圾,让程序员可以再次利用. 满足这样的程序就是GC GC的评价性能的标准: 1吞吐量2 最大暂停时 ...

  2. java gc 可达性_JAVA--GC 垃圾回收机制----可达性分析算法

    在JVM 中,java 为我们提供可有效的垃圾回收机制,GC ,GC的创建无疑是为了缓解内存压力.保存有效数据.回收垃圾无效数据: 在此之前GC在我的理解中,一直只是个概念,内存中出现垃圾,GC来回收 ...

  3. java垃圾回收机制的理解

    Java垃圾回收机制算法 标记----清除算法 复制算法 标记----整理算法 分代收集算法 为什么要进行垃圾回收 因为当一个对象的引用不可达,或者一个对象没有任何引用指向它,那么它就没有必要在内存中 ...

  4. java 垃圾回收机制的理解

    1.垃圾回收的意义 在java体系中内存的分和回收是自动化管理的,从而程序员不需要操心内存的分配和是否浪费.javaGC机制能帮我们把不需要的对象占用的内存回收,保证程序高效的运行.由于我们创建的对象 ...

  5. JVM架构和垃圾回收机制深入理解

    "七月的风,八月的雨,卑微的我,喜欢遥远的你" ,第一次听到这句歌词时,就很喜欢它,因为喜欢所以卑微,因为喜欢所以低到尘埃,就如张爱玲所说的,"见了他,她变得很低很低,低 ...

  6. Android性能调优篇之探索垃圾回收机制

    开篇废话 如果我们想要进行内存优化的工作,还是需要了解一下,但这一块的知识属于纯理论的,有可能看起来会有点枯燥,我尽量把这一篇的内容按照一定的逻辑来走一遍.首先,我们为什么要学习垃圾回收的机制,我大概 ...

  7. JVM (二) 垃圾回收机制概念+垃圾回收器种类

    前言 做一个有趣的程序员.哈哈哈哈 本次铁村的小蓝猫主要给大家详细分享JVM中垃圾回收机制 学习JVM 肯定是要了解垃圾回收机制的. 分享前,我们先了解下本次分享内容的框架. 一.垃圾回收机制定义 1 ...

  8. .Net的垃圾回收机制

    .Net 的垃圾回收机制 什么是垃圾回收机制 Garbage Collector运行机制 处理值类型对象 处理引用类型对象 引用类型对象的存放机制 小对象堆的处理机制 GC 的回收过程 GC的性能提升 ...

  9. v8的垃圾回收机制(二)

    理解垃圾回收机制有助于理解闭包,内存释放,和内存溢出的知识. 1 Mark-Sweep & Mark-Compact 对于老生代中的对象,由于存活对象占较大比重,再采用Scavenge的方式会 ...

最新文章

  1. VS2008编译汇编程序的问题
  2. ftp上传当天文件的方法_2种windows到linux上传文件的方法
  3. 【转】关于arcgis server ADF的几种超时
  4. 第一章 计算机网络 2 组成与分类 [计算机网络笔记]
  5. 7添加静态路由 hat red_Centos7/RHEL 7 配置静态路由
  6. 计算机录屏幕和声音的软件是什么,哪个录屏软件可以录内部声音?分享开启与调节的方法...
  7. shellcode免杀
  8. php 生产管理系统,erp的生产管理系统
  9. windows11 美化桌面图标后报错
  10. 墨卡托坐标转GPS坐标
  11. asps英文_车用英语怎么说
  12. 微信oauth2.0授权
  13. win10-未知的USB设备-解决自己问题的记录
  14. python控制手机
  15. 简易酒店管理系统(c++)
  16. Nsca安装简单步骤
  17. 软件设计师---计算机法律法规(知识产权)
  18. pytorch安装,torch.cuda.is_available()返回False解决方案
  19. 十二时辰和人体经络图文
  20. 分享77个HTMLCSS源码,总有一款适合您

热门文章

  1. 关闭linux退格键和vi发出的嘟嘟声
  2. python+cv2【给摄像头读取出的图像加文字和文字底纹】
  3. smartupload 路径不存在_使用jspSmartUpload.jar上传图片的路径问题
  4. InfoPath与 数据库源码下载
  5. 用openCV实现形态学操作
  6. 小明系列故事——玩转十滴水
  7. 强大的Perl正则表达式实例详解
  8. VS中怎么调出资源方案管理器
  9. 身份证名字转四六级成绩爬虫
  10. Java找对象笑话_找对象相亲的笑话几则,爱情笑话