`
hellogood
  • 浏览: 10629 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

GC工作机制

    博客分类:
  • Java
阅读更多
SUN的jvm内存池被划分为以下几个部分:
Eden Space (heap)
内存最初从这个线程池分配给大部分对象。
Survivor Space (heap)
用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。
Tenured Generation (heap)
用于保持已经在survivor space内存池中存在了一段时间的对象。
Permanent Generation (non-heap)
保存虚拟机自己的静态(reflective)数据,例如类(class)和方法(method)对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的。
Code Cache (non-heap)
HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)。
jvm的内存回收过程是这样的:
对象在Eden Space创建,当Eden Space满了的时候,gc就把所有在Eden Space中的对象扫描一次,把所有有效的对象复制到第一个Survivor Space,同时把无效的对象所占用的空间释放。当Eden Space再次变满了的时候,就启动移动程序把Eden Space中有效的对象复制到第二个Survivor Space,同时,也将第一个Survivor Space中的有效对象复制到第二个Survivor Space。如果填充到第二个Survivor Space中的有效对象被第一个Survivor Space或Eden Space中的对象引用,那么这些对象就是长期存在的,此时这些对象将被复制到Permanent Generation。
若垃圾收集器依据这种小幅度的调整收集不能腾出足够的空间,就会运行Full GC,此时jvm gc停止所有在堆中运行的线程并执行清除动作
分享到:
评论
1 楼 hellogood 2012-12-28  
SUN的jvm内存池被划分为以下几个部分:
Eden Space (heap)
内存最初从这个线程池分配给大部分对象。
Survivor Space (heap)
用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。
Tenured Generation (heap)
用于保持已经在survivor space内存池中存在了一段时间的对象。
Permanent Generation (non-heap)
保存虚拟机自己的静态(reflective)数据,例如类(class)和方法(method)对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的。
Code Cache (non-heap)
HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)。
jvm的内存回收过程是这样的:
对象在Eden Space创建,当Eden Space满了的时候,gc就把所有在Eden Space中的对象扫描一次,把所有有效的对象复制到第一个Survivor Space,同时把无效的对象所占用的空间释放。当Eden Space再次变满了的时候,就启动移动程序把Eden Space中有效的对象复制到第二个Survivor Space,同时,也将第一个Survivor Space中的有效对象复制到第二个Survivor Space。如果填充到第二个Survivor Space中的有效对象被第一个Survivor Space或Eden Space中的对象引用,那么这些对象就是长期存在的,此时这些对象将被复制到Permanent Generation。
若垃圾收集器依据这种小幅度的调整收集不能腾出足够的空间,就会运行Full GC,此时jvm gc停止所有在堆中运行的线程并执行清除动作

相关推荐

    Java程序员必须了解GC的工作原理

    Java程序员必须了解GC的工作原理

    c#的GC垃圾回收机制详细讲解文档

    C#的垃圾回收机制(GC)是.NET框架中一个至关重要的特性,它负责自动管理和释放内存,从而减轻程序员的工作负担。GC的主要目标是回收不再使用的对象所占用的内存,以防止内存泄漏。在这个机制下,程序员无需手动管理...

    Java程序员必须了解的GC工作原理

    理解GC的工作原理对于优化程序性能、防止内存泄漏以及提高系统稳定性至关重要。这篇文章将深入探讨Java中的垃圾收集机制,以及如何通过源码和工具来理解和分析GC的行为。 首先,垃圾收集是Java虚拟机(JVM)自动...

    gc回收机制

    理解并优化GC机制对于Java应用的性能调优至关重要。开发者可以通过调整JVM参数,如设置新生代和老年代的大小、设置GC日志、监控GC活动等手段,来改善应用的性能和稳定性。同时,编写良好的代码习惯,如及时释放不再...

    java垃圾回收(gc)机制详解

    Java垃圾回收(GC)机制是Java编程语言中的一个重要特性,它自动管理程序的内存空间,负责识别并清除不再使用的对象,以防止内存泄漏。本文将深入探讨Java GC的工作原理、类型、过程以及优化策略。 一、Java垃圾...

    什么是GC,GC是什么意思为什么要有GC

    GC机制可以自动追踪和回收不再使用的对象,释放内存资源,以便更好地利用系统资源。 GC的工作机制 GC的工作机制可以分为四个步骤: 1. 标记(Mark):GC会标记当前使用的对象,以便找到可以引用的所有对象。 2. ...

    GC6153_SERIAL_GC6153

    对于GC6153这样的芯片,驱动程序会包含初始化序列、读写指令集、错误处理机制等内容,确保系统能够高效、稳定地与芯片交互。 标签 "GC6153" 提供了关键的硬件信息,表明讨论的核心是GC6153芯片。这种芯片可能是一款...

    RGW 的GC深入解析与调优

    RGW 的 GC 深入解析与调优 ...GC 是 RGW 中的一种重要机制,可以有效地释放无用的对象占用的磁盘空间,提高存储设备的利用率。通过合理地调优 GC 相关的参数,可以提高 GC 的效率,提高 RGW 服务的可用性。

    JVM垃圾回收机制与GC性能调优

    总结来说,理解JVM堆的结构和GC的工作机制对于优化Java应用性能至关重要。调整合适的堆大小和内存分配策略可以有效减少垃圾回收的频率和时间,提高系统响应速度。此外,监控GC日志,分析GC行为,以及使用适当的GC...

    Java 内存区域和GC机制

    Java内存区域和垃圾收集(GC)机制是Java...了解并熟练掌握Java内存区域和GC机制对于优化Java应用性能、排查内存问题至关重要。开发者应根据应用需求选择合适的JVM参数和垃圾收集器,并借助相关工具进行监控和调优。

    MT6261_GC6153_Driver_V0_格科微gc61538w_GC6153_格科微_格科微GC6153@_mt6261

    总的来说,"MT6261_GC6153_Driver_V0"是联发科MT6261芯片与格科微GC6153模组协同工作的关键所在,它确保了显示功能的正常运行。通过对驱动的深入了解和适配,我们可以更好地利用这些硬件资源,为各种电子设备提供...

    sun_GC回收机制及内存等优化

    sun_GC回收机制及内存等优化

    gcviewer.rar

    在Java编程世界中,内存管理是至关重要的,特别是垃圾收集(Garbage Collection, GC)机制,它负责自动清理不再使用的对象,以避免内存泄漏。GCViewer正是这样一款强大的工具,它允许开发者直观地分析和理解Java程序...

    GC-powerstation 9.1.2

    "GC-powerstation 9.1.2" 是一个专门针对垃圾收集(Garbage Collection, GC)优化的工具或平台的版本号。...同时,了解不同GC策略的工作机制以及如何分析GC日志,也是优化过程中必不可少的知识点。

    Java垃圾回收GC机制

    Java垃圾回收GC机制 Java垃圾回收GC机制是Java虚拟机(JVM)中的一种自动内存管理机制,它主要是为了解决Java程序中的内存问题。GC机制的出现使得Java程序员不再需要手动管理内存,提高了开发效率和程序的稳定性。 ...

    GCViewer-FullGC分析工具

    在Java世界中,垃圾收集(Garbage Collection, GC)是管理内存的重要机制。然而,当GC运行频繁或出现长时间的Full GC时,可能会导致应用程序性能下降,甚至出现暂停现象。这时,我们需要对GC日志进行深入分析,以...

    GC9503V-DS IC规格书

    6. **故障诊断与调试**:GC9503V可能会有内置的状态指示和错误检测机制,帮助开发者快速定位问题。 7. **兼容性与适配性**:GC9503V可能与多种操作系统(如Linux、RTOS)和硬件平台兼容,规格书会列出这些信息,...

    Java基础[Java基础]--Java GC工作原理

    Java虚拟机(JVM)中的GC机制会定期检查堆内存中的对象,判断它们是否仍处于活动状态。如果某个对象不再被任何变量引用,即认为该对象已经“不可达”,GC就会回收这些对象所占用的内存空间。 **2.2 对象的分配与回收*...

Global site tag (gtag.js) - Google Analytics