首页 > 编程知识 正文

java对象内存模型,jvm内存详解

时间:2023-05-04 09:55:00 阅读:48139 作者:3284

JAVA内存模型:Java内存模型规定所有变量都存在于主内存中,并且每个线程都有自己的工作内存。 线程堆变量的所有操作都必须在工作内存中进行,不能直接堆主内存进行操作。 此外,每个线程都不能访问其他线程的工作内存。

Ava内存模型的Volatile关键字、原子性、可见性、有序性

JVM内存模型:线程专用区域程序计数器:当前线程正在运行的字节码的行号指示器,没有OOM

虚拟机堆栈:一种描述java方法执行的内存模型,每个方法在执行的同时都创建一个堆栈帧(堆栈帧),用于存储局部变量表、操作数堆栈、动态链接和方法出口等信息

堆栈帧(Frame )是存储数据和部分进程结果的数据结构,也用于处理动态链接、方法返回值和异常分派。 堆栈框架是随方法调用创建的

建,随着方法的结束,无论销毁——的方法是成功完成还是异常完成,(抛出了方法内未捕获的异常

常)都算作方法的结束。

本地方法堆栈:与Java堆栈类似,不同之处在于虚拟机堆栈是执行Java方法的服务,而本地方法堆栈是

朴素方法服务。 如果虚拟机实现使用C-linkage模型支持本机调用,则堆栈将

虽然是c堆栈,但HotSpot VM直接将本地方法堆栈和虚拟机堆栈合二为一。

线程共享区域堆-------运行时数据区:==是线程共享的内存区域,创建的所有对象和数组都存储在Java堆内存中,也是垃圾收集器进行垃圾回收的最重要的内存区域由于现代虚拟机采用分代收集算法,因此Java堆从GC的角度考虑为: 新生代(Eden 区、From Survivor 区和 To Survivor 区)和老年代

3358www.Sina.com/(1.8或更高版本的元空间) :加载到JVM中的类信息**、方法区/永久代常量和**即时编译器即使使用HotSpppom Java堆的永久层代实现方法空间,HotSpot垃圾收集器也可以像管理Java堆一样管理这部分内存,而无需为方法空间开发专用的内存管理器。 (永久使用的内存回收的主要目标是常量池的重用和类型的卸载,因此收益通常很小。)。

静态变量Class文件包含类的版本、字段、方法和接口等说明,以及在编译时生成的各种文字和符号引用的常量池(constonts ) 此部分在加载类后存储在方法区域的运行时常量池中。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。