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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux启动nginx命令行_Linux环境下启动、停止、重启nginx[通俗易懂]

    linux启动nginx命令行_Linux环境下启动、停止、重启nginx[通俗易懂]启动启动代码格式:nginx安装目录地址-cnginx配置文件地址例如:[root@LinuxServersbin]#/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf停止nginx的停止有三种方式:从容停止1、查看进程号[root@LinuxServer~]#ps-ef|grepnginx2、杀死进程[r…

    2022年9月28日
  • pycharm是java开发的吗_pycharmjupyter

    pycharm是java开发的吗_pycharmjupyterPycharm—编译器使用:虚拟环境与系统环境:就是包的区别。虚拟环境需要重新下包,但包不互相影响系统环境就是有下载过的所有包—通过切换本地—虚拟编译器即可切换环境本地:即python所在目录的python.exe程序–python最主要就是lib(第三方库群),python.exe编译器,pythonshell自带的IDLE,再加上个集成开发环境(pycharm)就齐了虚拟:v…

    2022年8月27日
  • 互联网金融学习总结(5)——市场主流的风控模型简要学习总结

    互联网金融学习总结(5)——市场主流的风控模型简要学习总结分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程一、市场调研目前市面主流的风控模型1、互联网金融前10名排行榜(数据截止日期2017-09-12)互联网金融公司排名分别是蚂蚁金服、陆金所、京东金融、苏宁金融、百度金融、腾讯理财通、宜信、钱大掌柜、万达金融和网易理财。1.1蚂蚁金服1.1.1大数据技术对…

    2022年5月22日
  • win10进入文件夹指令_命令行进去某个文件夹

    win10进入文件夹指令_命令行进去某个文件夹win+R-运行-cmd打开命令行窗口输入盘符:D:进入D盘命令行显示:D:\>继续输入D:\>cdD:\test进入test文件夹//在文件夹目录下,shift+鼠标右键,弹出菜单里,选择powershell,打开PowerShell框//当前,在E盘下打开的powershellE:\>//从E盘进入…

    2022年10月15日
  • JWT单点登录(源码学习)

    JWT单点登录(源码学习)三、JWT源码学习//登录成功之后,需要生成tokenStringtoken=Jwts.builder().setSubject(“用户名/用户信息”)//主题,可以放用户的详细信息.setIssuedAt(newDate())//token创建时间.setExpiration(newDate(System.currentTimeMillis()+60000))//token过期时间.setId(“用户ID”)//用户ID

    2022年5月21日
  • 分子动力学模拟软件_分子模拟软件Discovery Studio教程(十九):虚拟氨基酸突变提高结合亲和力…

    分子动力学模拟软件_分子模拟软件Discovery Studio教程(十九):虚拟氨基酸突变提高结合亲和力…DiscoveryStudio™(简称DS)是专业的生命科学分子模拟软件,DS目前的主要功能包括:蛋白质的表征(包括蛋白-蛋白相互作用)、同源建模、分子力学计算和分子动力学模拟、基于结构药物设计工具(包括配体-蛋白质相互作用、全新药物设计和分子对接)、基于小分子的药物设计工具(包括定量构效关系、药效团、数据库筛选、ADMET)和组合库的设计与分析等。蛋白的氨基酸定点突变可用于酶与抗体的设计,这…

    2022年5月9日

发表回复

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

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