JVM虚拟机(二):堆、栈、方法区概念区别

news/2024/7/6 3:07:51

Java 堆

Java堆是和Java应用程序关系最密切的内存空间,几乎所有的对象都放在其中,并且Java堆完全是自动化管理,通过垃圾收集机制,垃圾对象会自动清理,不需自己去释放。

根据垃圾回收机制的不同,Java堆有可能拥有不同的结构,最为常见的就是将整个Java堆分为新生代(Young Gen)和老年代(Tenured Gen)。其中新生代存放新生的对象或者年龄不大的对象,老年代则存放老年对象。

新生代分为edn区,s0区,s1区,s0和s1也被称为from和to区域,他们是两块大小相等,并且可以互相转换的空间

绝大多数情况下,对象首先分配在edn区,在新生代回收后,如果对象还存活,则进入s0或s1区,之后每经过一次新生代回收,如果对象存活则他的年龄就加1,对象达到一定的年龄后,则进入老年代。

举例:A a=new A();首先把对象存放到堆内存当中,发现这个A只用了一次,首先会进入新生代里边去,存放到edn区域里面,因为Java堆自动化管理,垃圾收集机制,发现这个a只用了一次,如果a又被一段代码引用,垃圾回收机制有算法,每引用一次记录一次,就会马上进入到s0或者是s1区域,一旦a这个对象引用次数非常多了,就会存放到老年代里去。

 

Java栈

Java栈是一块线程私有的空间,一个栈,一般由三部分组成:局部变量表、操作数据栈和帧数据区

局部变量表:用于报错函数的参数及局部变量

操作数栈:主要保存计算过程的中间结果,同时作为计算过程中的变量临时的存储空间。

帧数据区:除了局部变量表和操作数据栈以外,栈还需要一些数据来支持常量池的解析,这里帧数据区保存着访问常量池的指针,方便计程序访问常量池,另外当函数返回或出现异常时卖虚拟机子必须有一个异常处理表,方便发送异常的时候找到异常的代码,因此异常处理表也是帧数据区的一部分。

    

 

Java方法区

Java方法区和堆一样,方法区是一块所有线程共享的内存区域,他保存系统的类信息。

比如类的字段、方法、常量池等。方法区的大小决定系统可以保存多少个类。如果系统定义太多的类,导致方法区溢出。虚拟机同样会抛出内存溢出的错误。方法区可以理解为永久区,也就是和上面新生代、老年代对应的持久代(Perm Gen)。

 

上一张完成的图

 


http://www.niftyadmin.cn/n/3003985.html

相关文章

各路由协议的协议号_2020春节档,各路高手巅峰对决?鹿死谁手

《宠爱》12月31日上映,元旦期间连续两天票房破亿,电影的热度是近期新上映的电影中最高的一部。《宠爱》在豆瓣开画评分仅6.3,所以说档期选的好,容易出爆款;那么大年初一的上映的各路高手将迎来巅峰对决,那么…

http响应报文,如果响应的内容比较大,客户端怎么样判断接收完了呢?

1. http协议有正文大小说明的content-length2. 或者分块传输chunked的话 读到0\r\n\r\n 就是读完了 ----------------------------------------------------------------------------------------------- http响应内容比较大的话,会分成多个tcp segment 发送&am…

ni软件可以卸载吗_你的软件真的全部卸载干净了吗?最高效软件卸载工具推荐...

▌ 前言我们在电脑上运行 .exe 软件安装包时,安装程序会生成一些程序文件、后台服务和注册表项等,用以支持软件的正常运行。但是,在卸载软件时,很多软件的卸载程序并不能完全清除安装文件,经常卸载不干净,残…

springboot全局的异常拦截处理

1 全局异常处理与HttpServletResponse响应 RestControllerAdvice是帮助我们把信息转成json格式返回 ResponseBody是将方法中的字符串转成json格式同一返回,一般该方法返回值为Object 1.1 使用RestControllerAdvice搭配ExceptionHandler(推荐&#xff0…

菜鸡互啄队—— 团队合作

团队GitHub地址:https://github.com/BigBugWriters/pit 队名: 菜鸡互啄 队员学号: 姓名学号梁华超(队长)3116005144沈春霖3116005153杨钊雄3116005160林健城3116005145林奇凯3116005146林贤杰3116005147拟作的团队项目…

Springboot使用Aop拦截器记录方法运行总时长

写了一个方法,感觉逻辑又臭又长,想知道该方法的执行时间,于是写了一个拦截器,获取service中的每个方法的执行时间,查看其响应时长。 第一部分与第二部分转载自大佬的博客:https://blog.csdn.net/mu_wind/a…

java使用POI操作XWPFDocument中的XWPFRun(文本)对象的属性详解

转载自 https://www.cnblogs.com/libin6505/p/10338765.html 我用的是office word 2016版 XWPFRun是XWPFDocument中的一段文本对象(就是一段文字) 创建文档对象 XWPFDocument docxDocument new XWPFDocument(); 创建段落对象 XWPFParagraph parag…

关于使用java操作doc与docx互转

1、创建license.xml文件 在项目某位置新建一个license.xml文件&#xff0c;并复制下面内容复制到文件里就可以了。 <License><Data><Products><Product>Aspose.Total for Java</Product><Product>Aspose.Words for Java</Product>…