[Java VM 系列] GC原理学习

本文介绍了作者从华为转而关注Android技术背景,强调基础技术如Java虚拟机的重要性。重点聚焦于Java VM的垃圾回收(GC)机制,推荐了《The Garbage Collection Handbook》一书,并概述了GC的主要过程:Mark-Sweep、Copying、Mark Compact和Ref Counting。文章指出,GC的目标是自动化内存管理,程序员应理解其工作原理以优化性能。
摘要由CSDN通过智能技术生成

前言:

     以前一直在华为上班,说实话,估计没有哪个华为人有闲心写Blog,Blog更多属于IT工程师的专利。这两年从华为出来后,开始写blog。但从前面的blog的查看次数来看,目前大家最主要关心的还是Android方面的技术。没办法,估计现在人才缺口最大的属于移动互联网Android方面的了。

   但技术都是逐步发展出来的,android不可能是孙悟空,凭空从石头里面蹦出来。如果分解Android,实际上上关键技术除开架构外,基础技术都是很老旧的。比如APP工程师开发语言是Java,系统开发工程师是Java和C/C++,操作系统是Linux, 虚拟机还是没有逃脱常用虚拟机的范畴。当然基于上述技术,还是有优化和创新。但如果对这些基础技术掌握的话,要增量学习这些新东西是很容易的。

  后续会花点时间深入学习虚拟机的技术。虚拟机技术最核心的就是GC,垃圾回收或者说自动内存管理。掌握了GC,其实其他的,应该也不会很难吧。


正文:

     首先推荐大家一定要看看《The Garbage Collection Handbook》这本书,通过该书,我才对以前学习的GC相关的理论有了完整的脉络:

1. GC技术发展有40多年的历史,但核心技术包括:

   1) 垃圾对象的查找或者非垃圾对象的定位。即Mark过程

   2)清扫垃圾过程。即Sweep。

   围绕上述过程,目前核心的技术包括:Mark-Sweep, Coping collection, Mark Compact, Ref Counting.

Mark Sweep解决了垃圾的定位问题,Coping Collection解决了回收的内存优化问题,防止碎片。Mark Compact也是一种压缩方法。Ref conting属于一种Mark方法。


总的来说,GC的问题域包括:

1. 如何有利于更好地后续内存分配

2.如何快速查找到垃圾或者非垃圾

3.如何使回收后的内存方便后续的继续分配。

解决上述问题优劣的标准包括:

1. 内存分配速度更快,比如Cache命中率影响度最低

2. Pause时间更短

以前,我总觉得垃圾回收的目的在于垃圾回收,现在明白,实际上GC的核心在于自动化的内存管理。GC只属于自动内存管理的一部分。而程序员,应该理解系统

提供的内存管理能力和特点,主动适应编程,才能更好地发挥性能。就好比买小车,小轿车和越野车的加速特点不一样,强行猛踩油门,预期结果可能并不能满足。

只有更好地顺应,方能更好地利用。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值