jvm学习总结

1.类加载运行全过程

当我们使用java命令运行某个main函数启动程序时,首先需要通过类加载器把主类加载到JVM.

主要用到的类为loadClass,loadClass的类加载过程有如下过程

加载--》验证--》准备-》》解析》》初始化》》使用》》卸载

加载:

在硬盘上查找并通过io读写字节码文件,使用类时才加载,例如调用来的main方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。

验证:验证字节码的准备性

准备:给累的静态变量分配内存

解析:将符号引用替换为直接引用,该阶段会把一些静态方法换为指向数据所存内存的指针或句柄等

初始化:对类的静态变量初始化为指定的值,执行静态代码块

相关推荐
代码游侠17 小时前
应用——Linux 标准IO编程
linux·前端·数据库·学习·算法
梦幻精灵_cq17 小时前
python-os.path的“世纪大阅兵”:两个函数-11条语句(2+9)定乾坤
python·学习
charlie11451419117 小时前
快速Git教程
开发语言·git·学习·版本控制
chinakq17 小时前
【无标题】平板剪切干涉仪的相位差推导
学习
没有bug.的程序员17 小时前
GC 调优实战:从慢到快的真实案例
java·jvm·测试工具·gc·gc调优
晞微17 小时前
神经网络学习:感知器算法实现与可视化
神经网络·学习·算法
近津薪荼17 小时前
Linux 操作系统基础指令详解(一)
linux·服务器·学习
TracyCoder12317 小时前
机器学习与深度学习基础(一):监督学习、线性回归、逻辑回归
深度学习·学习·机器学习
会编程的李较瘦17 小时前
【Sparksql学习】SparkSql常用函数(DSL+scala)
学习·spark
Lovely Ruby18 小时前
前端er Go-Frame 的学习笔记:实现 to-do 功能(四),确保开发和部署共用一套代码
前端·学习·golang