GC是什么?

GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的。Java中没有提供释放已分配内存的显示操作方法。Java程序员不用担心内存管理,一切垃圾收集器JVM会自动进行管理。
主动请求垃圾回收,可以调用下面的方法之一:System.gc()或Runtime.getRuntime().gc(),但JVM可以屏蔽掉显示的垃圾回收调用。

作用 :垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低优先级的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。

在Java诞生初期,垃圾回收是Java最大的亮点之一,因为服务器端的编程需要有效的防止内存泄露问题,然而时过境迁,如今Java的垃圾回收机制已经成为被诟病的东西。移动智能终端用户通常觉得iOS的系统比Android系统有更好的用户体验,其中一个深层次的原因就在于Android系统中垃圾回收的不可预知性。 (GC是不定时进行的)

分代式垃圾收集

采用“分代式垃圾收集”,这种方法会根据Java对象的生命周期将堆内存划分为不同的区域,在垃圾收集过程中,可能会将对象根据生命周期长短分配到不同区域。 在内存中针对不同区域再进行细分为新生代老年代,新生代中分为Eden区和From区和T区,不同区域的算法不同。新生代中的区域分配比例为 E:F:T = 8:1:1 。通常情况下新生代:老年代 = 1:2 。比如1200M大小,那么新生代占据400,老年代占据800。
Eden:这是对象最初诞生的区域,并且对大多数对象来说,这里是它们唯一存在过的区域。
From: 从伊甸园(Eden)幸存下来的对象会被挪到这里,与S搭配进行垃圾回收
Survivor:从伊甸园(Eden)幸存下来的对象会被挪到这里,与F搭配进行垃圾回收
Tenured:这是经历过一定次数GC的足够老的幸存对象或体积比较大的对象的归宿,也称老年代。(大对象直接到达老年代)。
区别:对于老年代,年轻代收集(Minor-GC)过程是不会触及这个地方的。当年轻代收集不能把对象放进Tenured时,就会触发一次完全收集(Major-GC),这里可能还会牵扯到压缩,以便为大对象腾出足够的空间。

JVM-什么是GC?相关推荐

  1. JVM学习之GC常用算法

    2019独角兽企业重金招聘Python工程师标准>>> 出处:博客园左潇龙的技术博客--http://www.cnblogs.com/zuoxiaolong,多谢分享 GC策略解决了 ...

  2. JVM基础系列第14讲:JVM参数之GC日志配置

    说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...

  3. JVM系列二:GC策略内存申请、对象衰老

    JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类 现在比较常用的是分代收集(generatio ...

  4. JVM内存管理------GC算法精解(五分钟教你终极算法---分代搜集算法)

    转载自   JVM内存管理------GC算法精解(五分钟教你终极算法---分代搜集算法) 引言 何为终极算法? 其实就是现在的JVM采用的算法,并非真正的终极.说不定若干年以后,还会有新的终极算法, ...

  5. JVM内存管理------GC算法精解(五分钟让你彻底明白标记/清除算法)

    转载自  JVM内存管理------GC算法精解(五分钟让你彻底明白标记/清除算法) 相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧.不过LZ丑 ...

  6. JVM内存管理------GC算法精解(复制算法与标记/整理算法)

    转载自  JVM内存管理------GC算法精解(复制算法与标记/整理算法) 本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此 ...

  7. JVM架构和GC垃圾回收机制--面试

    JVM架构和GC垃圾回收机制详解 JVM架构图分析 下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看: Hadoop内存溢出(OOM)分类.参数调优化) JVM被分为三个主要的子 ...

  8. 【Flink】Flink jvm参数配置GC日志

    1.概述 转载:Flink jvm参数配置GC日志 生产环境上,或者其他要测试 GC 问题的环境上,一定会配置上打印GC日志的参数,便于分析 GC 相关的问题. 但是可能很多人配置的都不够" ...

  9. 触发JVM进行Full GC的情况及应对策略

    堆内存划分为 Eden.Survivor 和 Tenured/Old 空间,如下图所示: 从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为M ...

  10. JVM为什么需要GC

    社区内有人发起了一个讨论,关于JVM是否一定需要GC?他们认为应用程序的回收目标是构建一个仅用来处理内存分配,而不执行任何真正的内存回收操作的 GC.即仅当可用的 Java 堆耗尽的时候,才进行顺序的 ...

最新文章

  1. clickhouse 基础知识
  2. angular 命令行项目_Angular命令行界面介绍
  3. c 语言set用法,使用
  4. c带gui的图书馆管理系统_定了!区图书馆24小时城市书屋即将在这天正式对外开放...
  5. Python Numpy 从文件中读取数据
  6. 太赞了!包邮送 60 本 Python 畅销书!
  7. 信息安全管理与评估_计算机工程学院教师参加“信息安全管理与评估赛项”说明会...
  8. keil uvisoin软件出现闪退和打开工程以前添加的c文件上面出现黄色感叹号
  9. 搜索关键字高亮显示,就比微信多个多音字搜索
  10. tcp udp区别优缺点_TCP和UDP的区别
  11. token与sessionId的区别——学习笔记
  12. 全局变量 局部变量 静态变量
  13. 利用计算机打字教学设计,《键盘打字》教学设计
  14. monit 内存 监控_mac系统监控软件Monity for Mac
  15. PHP微信动态二维码活码管理系统源码免授权 独立版 带充值支付
  16. Python 的文件路径和操作(一)
  17. Delphi-UpperCase 函数
  18. 为什么静下心来阅读会是一种奢侈?
  19. 威尼都:定格“轻奢”生活新主张
  20. 原生态水平和垂直拉伸的JQUERY插件

热门文章

  1. 服务器网卡支持热插拔吗,HDMI接口能“热插拔”吗?这篇告诉你
  2. ConcurrentHashMap的使用场景
  3. 五万字,快速读完《图解TCP/IP》核心内容!!!(建议收藏)
  4. 今日发现一个挺好的软件,控制音量 App音量控制(App Volume Control)v2.17 安卓版
  5. 大工计算机英语考试,大工15春《专业英语(计算机英语)》在线测试123
  6. 北达科他州立大学计算机科学专业,2019上海软科世界一流学科排名计算机科学与工程专业排名北达科他州立大学排名第201-300...
  7. STM32——LCD液晶显示
  8. 樊登读书会终身成长读后感_终身成长读后感300字
  9. k线顶分型 python_顶分型K线形态形态特征及操作要领
  10. AtCoder Beginner Contest 121