GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,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:设置幸存区的目标使用率

java中的gc是什么意思的缩写_gc是什么意思(gc是什么意思的缩写)相关推荐

  1. java中的垃圾收集器_Java中的垃圾收集

    java中的垃圾收集器 Garbage collection in java is one of the advance topic. Java GC knowledge helps us in fi ...

  2. java 中的gc方法

    2019独角兽企业重金招聘Python工程师标准>>> System.gc()用于强制进行终结动作,即执行垃圾回收. 没有任何可达变量指向你,你还有活下去的理由吗?你就算活下去谁能找 ...

  3. java jvm调优_(第2部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    java jvm调优 这是以前的文章(第3部分,共1部分)的继续:有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的提要 . 事不宜迟,让我们开始使用我们的 ...

  4. java jvm调优_(第1部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    java jvm调优 我已经花了几个月的时间考虑审查有关性能调优,JVM,Java中的GC,Mechanical Sympathy等主题的文章和视频的缓存,并最终花了点时间–也许这就是重点我什么时候才 ...

  5. (第1部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    我已经花了几个月的时间考虑审查有关性能调优,JVM,Java中的GC,Mechanical Sympathy等主题的文章和视频的缓存,并最终花了点时间–也许这就是重点我什么时候需要做我的智力进步! 感 ...

  6. (第2部分,共3部分):有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的摘要...

    这是以前的文章(第3部分,共1部分)的继续:有关性能调优,Java中的JVM,GC,Mechanical Sympathy等的文章和视频的提要 . 事不宜迟,让我们开始使用我们的下一组博客和视频,印章 ...

  7. Java中的低GC:使用原语而不是包装器

    总览 有两个很好的理由在可能的地方使用原语而不是包装器. 明晰. 通过使用原语,您可以清楚地知道null值是不合适的. 性能. 使用原语通常更快. 清晰度通常比性能更重要,并且是使用它们的最佳理由. ...

  8. Java中哪些可以作为GC Roots

    1.概念 GC管理的主要区域是Java堆,一般情况下只针对堆进行垃圾回收.方法区.栈和本地方法区不被GC所管理,因而选择这些区域内的对象作为GC roots,被GC roots引用的对象不被GC回收. ...

  9. Java中GC (Allocation Failure)日志分析实战

    概述 博主在最近使用spring batch的过程当中遇到了内存容量耗尽程序崩溃的问题,于是决定将此次的内存问题分析通过本篇博客记录下来. 在分析gc日实例志之前,我们先通过一条<深入理解jav ...

  10. gc java root_深入理解Java中的Garbage Collection

    前提 最近由于系统业务量比较大,从生产的GC日志(结合Pinpoint)来看,需要对部分系统进行GC调优.但是鉴于以往不是专门做这一块,但是一直都有零散的积累,这里做一个相对全面的总结.本文只针对Ho ...

最新文章

  1. OBS源代码阅读笔记
  2. openAL在mac下播放音源结束时判断处理
  3. 电话号码中间四位用****代替
  4. 汉诺塔函数python_帮你轻松理解《汉诺塔》函数
  5. Firefox 下载、附加组件、Flash插件、缓存位置(附加Chrome下载和Opera下载)
  6. D0rado与javascript
  7. dos进入/退出某文件夹
  8. Magento: 添加first name 和 last name到newsletter Add additional fields to your newsl
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的二手车辆在线交易系统
  10. jQuery通过event获取点击事件的事件对象
  11. X-NUCA全国高校网安联赛7月训练题解
  12. 引用父类成员的关键字是java_Java 中对父类成员访问用的关键字是 ,而引用当前对象的关键字是 。_学小易找答案...
  13. [转载] python3基础:异常处理及python常见异常类型总结
  14. 转载】Unity3D美术方面贴图蓄力帖(值得珍藏学习)
  15. C10K 和 C1000K 回顾
  16. 大学生计算机考试PPT制作,计算机等级考试制作PPT表格
  17. QQ2017熄灭“QQ游戏图标”方法
  18. 在Excel中批量生成条形码
  19. Sketch 的基本操作(一)
  20. 利用alias自定义快捷命令

热门文章

  1. 【Java】 类和对象
  2. 个人计算机显示器配置,怎么看电脑显示器配置
  3. fiddler手机抓包问题详解
  4. 微博、微信、qq、空间、等分享功能
  5. 使用Javascript 实现 分享到 新浪微博 QQ 空间等
  6. IE的Internet选项“自定义级别”置灰,不能修改的问题解决
  7. 0x80004005是什么错误?0x80004005的解决方案
  8. mybatis处理多对一映射关系3- 分步查询和延迟加载
  9. 计算机学报编辑待遇,《计算机学报》编辑委员会
  10. 【PyQt】重写系统事件之拖动改变窗口大小