2022年深入Java虚拟机Java内存模型探讨一宣贯 .pdf

上传人:H****o 文档编号:33404672 上传时间:2022-08-10 格式:PDF 页数:3 大小:229.05KB
返回 下载 相关 举报
2022年深入Java虚拟机Java内存模型探讨一宣贯 .pdf_第1页
第1页 / 共3页
2022年深入Java虚拟机Java内存模型探讨一宣贯 .pdf_第2页
第2页 / 共3页
点击查看更多>>
资源描述

《2022年深入Java虚拟机Java内存模型探讨一宣贯 .pdf》由会员分享,可在线阅读,更多相关《2022年深入Java虚拟机Java内存模型探讨一宣贯 .pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、在上一篇探讨 String类型创建对象的注意事项时,笔者蜻蜓点水的提到了一点 Java内存模型 。关于这一点, 笔者发现弥漫在市场上的各类 Java 辅导书竟然没有一本能够深入浅出讲解Java 内存模型,只有在孙鑫老师的 Java 学习无难事视频教程中略有涉及。然而真正介绍此概念的书,是一本早已停版,在市场上几乎已经绝迹了的骨灰级宝典深入 Java 虚拟机(笔者认为堪与葵花宝典相媲美哈)。下图是 Java 虚拟机的结构框图,包括在规范中描述的主要子系统和内存区。每个Java 虚拟机都有一个类装载器子系统,它根据给定的全限定名来装入类型(类或接口),同样,每个Java 虚拟机都有一个执行引擎,它

2、负责执行那些包含在被装载类的方法中的指令。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 当 Java 虚拟机运行一个程序时,它需要内存来存储许多东西,例如,字节码,从已装载的class 文件中得到的其他信息,程序创建的对象,传递给方法的参数, 返回值,局部变量,以及运算的中间结果等等,Java 虚拟机把这些东西组织到“ 运行时数据区 ” 中,以便于管理。每个 Java虚拟机实例都有一个方法区以及一个堆,它们是由该虚拟机实例中所

3、有线程共享的。当虚拟机装载一个class 文件时,他会从这个 class 文件包含的二进制数据(即字节码)中解析类型信息。然后,它把这些类型信息放到方法区中。当程序运行时,虚拟机会把所有该程序在运行时创建的对象都放到堆中。如下图所示。当每一个新线程被创建时,它都将得到它自己的PC 寄存器 (又叫程序计数器),以及一个Java栈,如果线程正在执行一个Java 方法(非本地方法,本地方法这里不予讨论),那么PC 寄存器的值将总是指示下一条将被执行的指令, 而它的 Java 栈则总是存储该线程中Java方法调用的状态 包括它的 局部变量 ,被调用时 传进来的参数 ,它的名师资料总结 - - -精品资

4、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 返回值 ,以及运算中的 中间结果 等等。Java 栈是由许多栈帧( stack frame)组成的,一个栈帧包含一个 Java 方法调用的状态。当线程调用一个Java 方法时,虚拟机压入一个新的栈帧到该线程的Java 栈中,当该方法返回时,这个栈帧从Java 栈中弹出并抛弃。注意: 我们常说的堆栈庸俗约定指的是Java 栈, 不要与堆搞混淆了哈。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁