首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

宜信普惠浅谈JVM与GC的关联

JVM与GC之间有怎样的关联呢?本文通过宜信普惠的介绍,希望对您有所帮助。

JVM实现了Java语言最重要的特征:即平台无关性。原理:编译后的 Java 程序指令并不直接在硬件系统的 CPU 上执行,而是由 JVM 执行。JVM屏蔽了与具体平台相关的信息,使Java语言编译程序只需要生成在JVM上运行的目标字节码(.class),就可以在多种平台上不加修改地运行。

说起垃圾回收的场所,宜信普惠在了解了JVM(Java Virtual Machine Model)内存模型之后,发现堆是Java虚拟机进行垃圾回收的主要场所,其必要场所是方法区。

GC即垃圾收集机制,指JVM用于释放那些不再使用的对象所占用的内存。java语言并不要求JVM有GC,也没有规定GC如何工作。不过常用的JVM都有GC,而且大多数GC都使用类似的算法管理内存和执行收集操作。

在宜信普惠的视角,GC的存在主要弄明白以下三个问题:确定哪些内存回收 (对象是否可以被回收的两种经典算法: 引用计数法和可达性分析算法);什么时候回收,回收的区域(堆的新生代、老年代、永久代的垃圾回收时机,MinorGC 和 FullGC);怎么回收 (三种经典垃圾回收算法(标记清除算法、复制算法、标记整理算法)及分代收集算法、分区收集算法和七种垃圾收集器)。

在Java中可以作为GC Roots对象包括以下几种:虚拟机栈(栈帧中的局部变量表,Local Variable Table)中引用的对象;方法区中类静态属性引用的对象;方法区中常量引用的对象;本地方法栈中JNI(即一般说的Native方法)引用的对象。

现在对于JVM中的GC算法两大类:一类负责收集年轻代,一类负责收集老年代。假如没有显式指定垃圾回收算法,一般会采用系统平台默认算法,当然也可以自己指定。

关于GC系统的实现,宜信普惠建议可以从以下几个方面着手:GC判断策略(例如引用计数,对象可达);GC收集算法(标记清除法,标记清除整理法,标记复制清除法,分带法);GC收集器(例如Serial,Parallel,CMS,G1)。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221230A04EYW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券