Java的垃圾回收机制简述

2023-11-13

Java垃圾回收机制简述

一、由谁来做?
Java的垃圾回收是由JVM(Java虚拟机)来做的

二、什么时候做?
1)CPU空闲的时候,自动进行回收;
2)在堆内存存储满了之后,自动进行回收
3)程序调用System.gc()主动尝试进行回收。

三、怎么做?
1)先找到垃圾对象:
判断垃圾对象的算法主要有:
A、引用计数法:类似给对象添加引用计数器,每次引用,计数器+1,每次失效引用,计数器-1,任何时候计数器为0的对象,就是垃圾对象
B、可达性分析算法:(还没有理解透彻,后续补充)
2)再收集清除垃圾对象
算法主要有:
A、标记清除法:最基础的收集算法,分为“标记”,“清除”二个阶段;
B、复制算法;
C、标记整理法;
D、分代收集算法:当前JVM的垃圾收集大都采用分代收集算法。即根据对象的新老特点,采取合适的垃圾收集算法。
将Java堆对象分为新生代和老年代,在新生代中,每次收集都会有大量对象死去,故可以采用“复制算法”。
在老年代中,对象的存活率高,故可以采取“标记清除法”和“标记整理算法”。
补充解释:
新生代:一般存放新生成的,或者说朝生夕死的对象;
老年代:一般存放生命周期较长的对象,在新生代中,经历了N次垃圾回收后仍然存活的对象,都将进入老年代;
永久代:主要存放静态文件,Java类,方法等,永久代对垃圾的回收没有什么影响。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java的垃圾回收机制简述 的相关文章

随机推荐

  • CSS > Flex 布局中的放大和收缩计算

    原文 https dev opera com articles flexbox basics 译者注 本文仅简单翻译下原文中关于如何计算 flex 属性的值的部分 其他有关 Flex 布局的知识本文不作探讨 2015 12 5更新 关于 f
  • pixi.js 导出部分区域裁剪图片

    方案 先通过api到出image对象 在通过canvas绘制图片 在导出数据 代码 const x y this app stage getBounds 超出的x y const stageImage this app renderer p
  • mybatis ---- 级联查询 一对多 (集合映射)

    关联有嵌套查询和嵌套结果两种方式 本文是按照嵌套结果这种方式来说明的 上一章介绍了多对一的关系 用到了
  • 订单管理实现功能

    一 目标以及实现思路 商家 查看订单 发货 订单状态 1未发货 2已发货 3已签收 4已撤单 默认值1 订单项查看 思路 订单表的查询 将订单表的订单状态由1改为2通过订单的id到订单项表查询出对应的订单 买家 查看订单 撤单 签收 思路
  • Cocos2d-x 3.x部署

    这是我第一次写技术文章 这里只是分享一下我的部署经验 请各位参考 谢谢 我简单的写写我的部署步骤 只参考了官方的readme 环境 win7 64位 1 打开控制台cmd 2 进入到cocos2d x引擎目录 键入setup py 键入的前
  • CSAPP Lab4- PerfLab

    代码优化 typedef struct unsigned short red R value unsigned short green G value unsigned short blue B value pixel 图像用一维数组表示
  • 树莓派4B安装64位系统 以及基础配置

    最近在使用一个SDK时发现只提供了linux64版本的 而我用的树莓派系统是32位的 查了一下发现官方有提供64位版本的 开始了重装系统 总结了一下基础配置包括换源 远程连接 中文输入法 摄像头等配置 大纲 准备工具 1 SD卡格式化 2
  • “起床困难综合症”「NOI2014」【题解】

    起床困难综合症 洛谷 题目 题目描述 drd的防御战线由n扇防御门组成 每扇防御门包括一个运算op和一个参数t 其中运算一定是OR XOR AND中的一种 参数则一定为非负整数 如果还未通过防御门时攻击力为x 则其通过这扇防御门后攻击力将变
  • Kafka 安装与部署(单机版)与kafkaDemo调试测试(包含JAVA Demo)

    部署需要的包 http download csdn net download liangmaoxuan 10228805 1 kafka 2 10 0 10 2 0 tar 1 解压kafka 2 10 0 10 2 0安装包 tar xv
  • React生命周期getDerivedStateFromProps&getSnapshotBeforeUpdate

    getDerivedStateFromProps getDerivedStateFromProps nextProps preState nextProps 与componentWillReceiveProps的nextProps参数相同
  • 《Android开发——Android Studio的下载、安装与配置》

    Android开发 Android Studio的下载 安装与配置 一 下载 Android Studio最新的版本有一些BUG 不稳定 推荐安装老版本 在正式安装Android Studio之前 需要安装JDK 同学们可以参考下面这个博客
  • 链路追踪jaeger

    这里的链路指的是客户端向服务发起一个请求 该请求所经过的路线 也可以说是该请求经过的流量 例如 客户端发起一个下订单的请求其流量过程 request gt service gt order web gt order srv gt mysql
  • 《面向对象程序设计》教学资源汇总(2023)

    面向对象程序设计 教学资源汇总 2023 一 教学网站 blog csdn net bigleo 二 课堂派加课码 加课码 M274UN QRCode 三 课件下载 课件下载 长期有效 提取密码 tqucqx 四 本课程课件 二套 及实验
  • Sequence Modeling: Recurrent and Recursive Nets(3)

    CONTENTS Leaky Units and Other Strategies for Multiple Time Scales One way to deal with long term dependencies is to des
  • I2C软件模拟中的IO方向设置问题

    例程 STM32F103系列 I2C软件模拟实验 战舰例程 问题 下面两行关于 IO方向 的代码不太明白 之前一直看的例程都是库函数的代码 突然间冒出来两行寄存器的代码一时间手足无措 define SDA IN GPIOB gt CRL 0
  • Linux安装docker,在docker上安装mysql

    一 linux安装docker 1 下载安装包 下载地址 Index of linux centos 7 x86 64 stable Packages 我用的操作系统是centos7 根据自己操作系统找到相应版本下载 2 上传安装包 我用的
  • Docker学习笔记(三)-编写自己的Dockerfile

    Dockerfile是什么 Dockerfile用于快速创建自定义的Docker镜像 在上一篇博客中我们知道常见的三种创建image的手法 一般情况我们可以通过在基础镜像的基础上通过docker commit的方式生成新的image 但是对
  • IDEAweb项目文件夹没有蓝色小点

    问题原因 idea没有识别web文件夹为一个web项目 解决方案 需要手动选中该moudle 主动add web文件夹即可
  • centos7 kvm 设置桥接网卡br0

    centos kvm 设置桥接网卡br0 一 关于kvm的操作 1 查看CPU是否支持VT egrep vmx svm color always proc cpuinfo 2 检查内核模块是否加载 lsmod grep kvm 3 查看Se
  • Java的垃圾回收机制简述

    Java垃圾回收机制简述 一 由谁来做 Java的垃圾回收是由JVM Java虚拟机 来做的 二 什么时候做 1 CPU空闲的时候 自动进行回收 2 在堆内存存储满了之后 自动进行回收 3 程序调用System gc 主动尝试进行回收 三