栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM学习笔记

什么是JVM

JVM是java虚拟机的缩写,是一个抽象出来的、虚拟的计算机。与操作系统进行交互,有自己完善的架构,如处理器、堆栈、寄存器,用来解析和运行java程序

Java为什么能实现跨平台

关键在于使用java虚拟机,java代码不直接在cpu上运行,而是在java虚拟机上运行

java先把java文件编译成二进制的.class字节码文件,然后再加载到java虚拟机中,jvm解析成各个操作系统的机器指令,从而实现跨平台

jvm运行时的数据区域

类加载过程

1、加载:把.class的二进制字节码文件加载近jvm中

2、连接

​ 1)验证:确保被加载类的正确性

​ 2)准备:为类变量(静态变量)分配内存,设置默认值(初始化之前不赋予初始值)

​ 3)解析:把类中的符号引用转换成直接引用

3、初始化:为类变量赋予初始值

4、实例化:为新对象分配内存空间,为实例变量赋值

双亲委派机制

一个类加载器接受到类加载的请求时,会将请求委托给父类加载器,一直委托到最上层的父类加载器,父加载器加载失败时,会将类交给子加载器加载,所有加载器都加载不到时,抛出ClassNotFoundException异常。

双亲委派机制作用为确保java核心类库中的类不会被用户自定义的类所替代

模型工作工程:用户自定义的类加载器 --> 应用类加载器 Application ClassLoader --> 拓展类加载器Extension ClassLoader --> 根加载器 Bootstrap ClassLoader(顶端)

JVM五大数据区域

本地方法栈(Native Method Stack)

服务于本地方法接口(JNI:Java Native Interface),JDK中带有native关键字的方法为本地方法,本地方法接口是为了融合不同的编程语言为java所用,在执行引擎执行的时候加载本地方法库,目前使用极少

程序计数器(Program Counter Register)

线程私有的区域,比较小的一块内存空间,用于记录当前线程要执行的字节指令所处的地址,通过程序计数器来选取下一条需要执行的字节码指令

方法区(Method Area)

也叫非堆,逻辑上存在物理上不存在,和堆一样是线程共享的区域

用于存放被虚拟机加载的类信息、常量池、方法数据、方法代码、符号引用等

JDK1.7以前是在永久代中,JDK1.8是在元空间中(元空间不在虚拟机中,使用本地内存)

栈(Stack)

线程私有的区域,存储基本类型的值,对象的引用、方法等,

线程中执行一个方法时往栈中插入一个栈帧,最先入栈的最后出栈,与队列相反遵循先进后出的原则,栈的生命周期与线程一致

堆(Heap)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035371.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号