java-内存管理

java-内存管理

一、jvm内存结构

程序计数器(Program Counter Register)、JVM虚拟机栈(JVM Stacks)、本地方法栈(Native Method Stacks)、堆(Heap)、方法区(Method Area)

(1)PCR

尾随线程生命周期,记录当前运行到的.class字节码行数,用于多线程操作

(2)JVM Stacks

尾随线程生命周期,在方法运行中存储数据

Java虚拟栈帧.bmp 

(3)Native Method Stacks

处理native方法,如object中的hashCodes()等

(4)Heap

存储全部实例对象和数组对象,内置GC

(5)Method Area

堆的组成部分,但不强制GC。存储的对象为执行时常量池、静态变量、JVM载入的类信息等


二、垃圾回收

堆和方法区须要进行垃圾回收,其它三个随线程生命周期创建销毁

垃圾判定算法

(1)引用计算器:对循环引用的对象无法回收

(2)根搜索:效率较低


垃圾清除算法

(1)标记、清除算法

  过程:内存紧张时,停止程序,遍历GC Root将可达的对象标记出可存活的对象,清除全部未使用的对象

  缺点:效率较低;清理出来的空暇内存不连续

(2)复制算法

  过程:将内存分成活动区间和空暇区间两块,新分配的内存在活动区间,内存紧张时进行GC,将活动区间中

            存活的对象,按顺序放入空暇区间

  缺点:浪费一半内存;对象存活率高时比較费复制操作

(3)标记、整理算法

  过程:类似(1)标记全部存活对象,又一次移动按内存顺序排列对象,将末端内存清除

  缺点:效率不高

(4)分代搜索算法

  过程:针对不同对象进行不同的回收算法。

  夭折对象(局部变量、暂时变量):复制算法(80%内存分配对象+10%活动区间+10%空暇区间)

  老不死对象(缓存对象、数据库连接对象、单例对象):标记、整理算法

  不灭对象(String池对象、class类信息):标记、整理算法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119267.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • goland激活服务器(注册激活)

    (goland激活服务器)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html23LNPMIJZT-eyJsaWNlbnNlSWQi…

    2022年3月29日
    271
  • 从零实现一个 Promise

    从零实现一个 Promise

    2021年7月2日
    90
  • [Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波「建议收藏」

    [Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波「建议收藏」本篇文章主要讲解Python调用OpenCV实现图像平滑,包括四个算法:均值滤波、方框滤波、高斯滤波和中值滤波。全文均是基础知识,希望对您有所帮助。知识点如下:1.图像平滑2.均值滤波3.方框滤波4.高斯滤波5.中值滤波

    2022年10月14日
    1
  • 京东猪脸识别比赛数据预处理:用Python将视频每一帧提取存储为图片

    京东猪脸识别比赛数据预处理:用Python将视频每一帧提取存储为图片最近参加京东的猪脸识别比赛,训练集是30个视频,需要将视频的每一帧提取出来存储为图片,存入对应的文件夹(分类标签)。本例是直接调用了cv2模块中的VideoCapture。但有个问题,每一个视频转换得到的30个子文件夹里,都有2952张图片,但第2952张是空的,所以只有运用强大的Linux递归删除符合条件的文件了

    2022年6月21日
    25
  • 普林斯顿体系结构与计算机配件的关系研究_普林斯顿计算机博士

    普林斯顿体系结构与计算机配件的关系研究_普林斯顿计算机博士冯诺依曼、普林斯顿体系结构:输入输出设备不用说了吧。CPUCPU包括控制器和运算器。存储器这里的存储器实际上就是我们现在所说的内存。在学习单片机的时候,这个存储器可能是ROM,也可能是RAM,还可以扩展,但它一直都是半导体存储器件,属于直接与CPU交换数据的内存。下面的设备不在冯诺依曼体系结构图里硬盘而我们现在的硬盘则是磁性存储器件,它的读取速度比半导体存储器件要慢很多,并且它…

    2022年10月4日
    4
  • 基于STM32F4单片机对步进电机的控制(有代码)

    基于STM32F4单片机对步进电机的控制(有代码)步进电机是将电脉冲控制信号转变为角位移或线位移的一种常用的数字控制执行元件,又称为脉冲电机。在驱动电源的作用下,步进电机受到脉冲的控制,其转子的角位移量和速度严格地与输入脉冲的数量和脉冲频率成正比。步进电机每接收一个电脉冲,转子就转过一个相应的角度(步距角)。改变通电顺序可改变步进电动机的旋转方向;改变通电频率可改变步进电动机的转速。因此,通过控制输入电脉冲的数目、频率及电动机绕组的通电顺序就可以…

    2022年5月6日
    493

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号