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)
上一篇 2021年11月13日 上午11:00
下一篇 2021年11月13日 上午11:00


相关推荐

  • 鹰眼摄像头(OV7725)的使用

    鹰眼摄像头(OV7725)的使用原载:http://blog.csdn.net/lxk7280/article/details/26975233?utm_source=tuicool凭借着OV7620,将已经调好速度控制和角度控制的车子能跑起来了。基础功能实现后就开始对车子优化了。一个好的人眼睛最重要,同样对于一个好的平衡车,摄像头传感器最重要。因此我决心首先做的是对摄像头的优化。

    2022年4月19日
    121
  • UDP协议详解[通俗易懂]

    UDP协议详解[通俗易懂]目录1、简介2、UDP协议3、端口4、UDP和ARP之间的交互5、UDP适用场景6、UDP洪水1、简介UDP(UserDatagramProtocol)是一个简单的面向消息的传输层协议,尽管UDP提供标头和有效负载的完整性验证(通过校验和),但它不保证向上层协议提供消息传递,并且UDP层在发送后不会保留UDP消息的状态。因此,UDP有时被称为不可靠的数据报协议。如果需要传输可靠性,则必须在用户应用程序中实现。UDP使用具有最小协议机制的简单无连接通信模型。UDP提供数据

    2022年6月7日
    54
  • uniapp,小程序上传图片

    uniapp,小程序上传图片html<image@click=”chooseImage”:src=”pic”class=”toux”mode=””></image>jschooseImage(){ var_this=this uni.chooseImage({ count:1,//默认9 sizeType:[‘original’,’compressed’],//可以指定是原图还是压缩图,默认二者都有 sourceType:[‘album’,’came

    2022年6月16日
    39
  • 个人总结 – JS逆向解析[通俗易懂]

    个人总结 – JS逆向解析[通俗易懂]目前加密的方式总结有下面几点: 对称加密(加密解密密钥相同):DES、DES3、AES 非对称加密(分公钥私钥):RSA 信息摘要算法/签名算法:MD5、HMAC、SHA 前端实际使用中MD5、AES、RSA,自定义加密函数使用频率是最高的 几种加密方式配合次序:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,用签名算法生成非对称加密…

    2022年6月19日
    110
  • java遍历list对象集合_java遍历List集合的方法有哪些[通俗易懂]

    本文为大家分享了有序集合List中的四种遍历方式,希望能对大家有所帮助。(学习视频分享:java课程)先创建一个Student类,用来创建对象,并提供有参和无参构造方法。packagelesson1;publicclassStudent{Stringname;intage;publicStringgetName(){returnname;}publicvoidsetName…

    2022年4月13日
    49
  • 简述modelandview_ModelAndView

    简述modelandview_ModelAndView当控制器处理完请求时,通常会将包含视图名称或视图对象以及一些模型属性的ModelAndView对象返回到DispatcherServlet。因此,经常需要在控制器中构造ModelAndView对象。ModelAndView类提供了几个重载的构造器和一些方便的方法,让你可以根据自己的喜好来构造ModelAndView对象。这些构造器和方法以类似的方式支持视图名称和视图对象。当

    2026年4月18日
    4

发表回复

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

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