通用的分代垃圾回收机制

分代垃圾回收机制,是基于这样一个事实,不同的对象的生命周期是不一样的。因此,不同的生命周期的对象可以采用不同的回收算法,便以提高回收效率,我们将对象分为三种状态:年轻代、年老代、持久代。同时,将处于不同状态的对象放到堆不同的区域。JVM将堆内存划分为Eden、Survivor和Tenured/Old空间。

1、年轻代

​ 是所有新生的对象首先是放在Eden区。年轻代的目标就是尽可能快速的收集调那些生命周期短的对象,对应的是Minor GC,每次Minor GC会清理你去年轻代的内存,算法采用效率较高的复制算法,频繁的操作,但是会浪费内存空间。当”年轻代“区域存放满对象后,就将对象存放到老年代区域。

2、老年代

​ 在年轻代中历经了N(默认15)次垃圾回收后仍存活的对象,就会被放到变老代中。因此可以认为年老代中存放的都是一些生命周期较长的对象,年老代对象越来越多,我们就需要MAjor GC和Full GC(全量回收),来一次大扫除,全面清理年轻代区域和年老代区域。

3、永久代

​ 用于存放静态文件,如Java类、方法等。持久对垃圾回收没有显著影响,JDK7以前就是”方法区“的一种实现。JDK8以后就没有”永久代“,使用meta space于数据空间和堆替代。

内存管理_分代机制(年轻代、年老代、永久代)相关推荐

  1. java基础(一):谈谈java内存管理与垃圾回收机制

    看了很多java内存管理的文章或者博客,写的要么笼统,要么划分的不正确,且很多文章都千篇一律.例如部分地方将jvm笼统的分为堆.栈.程序计数器,这么分太过于笼统,无法清晰的阐述java的内存管理模型: ...

  2. python内存的回收机制_python的内存管理和垃圾回收机制详解

    简单来说python的内存管理机制有三种 1)引用计数 2)垃圾回收 3)内存池 接下来我们来详细讲解这三种管理机制 1,引用计数: 引用计数是一种非常高效的内存管理手段,当一个pyhton对象被引用 ...

  3. JVM原理(Java代码编译和执行的整个过程+JVM内存管理及垃圾回收机制)

    转载注明出处: http://blog.csdn.net/cutesource/article/details/5904501 JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.e ...

  4. Python内存管理以及垃圾回收机制

    垃圾回收:用通俗点的语言解释就是内存管理和垃圾回收的过程. 大管家refchain 在Python的C源码中有一个名为refchain的环状双向链表,这个链表就比较厉害了,因为Python程序中一旦创 ...

  5. Python的内存管理与垃圾回收机制

    在使用真格量化时,一些用户希望了解如何来提高系统性能.通过了解Python的内存管理和垃圾回收机制,我们可以有针对性地去提高策略代码性能. Python内存管理机制 Python的内存管理机制:引入计 ...

  6. 详解JVM内存管理与垃圾回收机制2 - 何为垃圾

    随着编程语言的发展,GC的功能不断增强,性能也不断提高,作为语言背后的无名英雄,GC离我们的工作似乎越来越远.作为Java程序员,对这一点也许会有更深的体会,我们不需要了解太多与GC相关的知识,就能很 ...

  7. 详解JVM内存管理与垃圾回收机制5 - Java中的4种引用类型

    在Java语言中,除了基础数据类型的变量以外,其他的都是引用类型,指向各种不同的对象.在前文我们也已经知道,Java中的引用可以是认为对指针的封装,这个指针中存储的值代表的是另外一块内存的起始地址(对 ...

  8. python 内存回收机制_【第1题】 Pythonn内存管理以及垃圾回收机制

    内存管理 Python解释器由c语言开发完成,py中所有的操作最终都由底层的c语言来实现并完成,所以想要了解底层内存管理需要结合python源码来进行解释. 1. 两个重要的结构体 include/o ...

  9. Python 内存管理与垃圾回收机制

    python python内存的泄露和溢出 前言 一.内存泄露和溢出 二.垃圾回收机制 1.引用计数机制 2.标记清除 3.分代回收 三.垃圾回收 总结 前言 虽然在做科研的路上并没有遇到内存方面的问 ...

最新文章

  1. Oracle 表分区删除操作
  2. BCH开发Cashscript语言,可构建自主决策交易特定方案
  3. java content()_理解content(一)
  4. 主机到中继地址的发包路径
  5. 浅谈ATP检查中的“确认可用部分数量”(一)
  6. L1-045 宇宙无敌大招呼
  7. jquery-data的三种用法
  8. android studio打印日志语句Log.d()
  9. 3d激光雷达开发(法向量预测)
  10. 约瑟夫问题-sdut
  11. 51单片机红外遥控小车
  12. rstudio 连接mysql_RStudio 操作MySQL数据库
  13. python中complex的用法,Python complex()函数
  14. php 获取array的长度_php中获取数组长度的方法
  15. 序章---设计模式-各个击破系列
  16. 大衣哥在《火火的情怀》后,和孟文豪张成军推出《新时代的农民》
  17. 哥德巴赫猜想(python)
  18. java开发 三年经验
  19. nginx隐藏Vary头信息
  20. 对象转二进制--》二进制转对象

热门文章

  1. js通过身份证号获取出生日期,性别,年龄
  2. 会话空闲时间已超过限度
  3. Latex导入pgf图片
  4. c语言求婚代码大全,程序员表白教程,这些代码用过的都成功了!
  5. Win10--在右键菜单中添加cmd.exe(在此处打开CMD窗口)
  6. 史上最全的测试用例设计方法
  7. 图像分割(MATLAB实现)
  8. 《程序员》2012年12期精彩内容:2012这一年
  9. Spring Cloud Hystrix 服务容错保护
  10. jQuery中的end()方法