小白学习JVM随笔①

JVM

什么是JVM

JVM java虚拟机。编译运行JAVA程序的东西。由于系统的问题,软件不能通用。而对于java程序来说,jvm会把java源文件编译为字节码文件。再将字节码文件解析为与系统相对应的机器码文件。由此实现java程序的跨平台性。实际上目前jvm只是按照java的解析规范识别字节码文件,所以被称之为java虚拟机。如果能让jvm按照其他语言的解析规范,比如php,去解析字节码文件。那么也可以实现php的跨平台性。

JVM执行class文件的过程

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

JVM类加载机制

JVM加载顺序大体上可以是
父类静态资源
子类静态资源
父类构造方法
子类构造方法

实际上在准备阶段的时候JVM就会对类变量进行内存分配及初始化,但这里的初始化值并不是用户定义的或所希望的值而是java语言中该变量类型的零值。如定义 static int i = 3;在准备阶段会初始化i=0;在初始化阶段才会赋值为3;
而初始化阶段。jvm会首先收集类变量赋值语句,静态代码块构成类初始化方法。然后收集成员变量赋值语句,普通代码块,最后收集构造方法构成对象初始化方法。由此决定类各个属性及方法的加载顺序。

JVM内存结构

jvm内存可以分为两类,一类是线程公有的。一类是线程私有的。
线程公有
堆,方法区,常量池。
堆中又分为新生代和老年代。新生代分为Eden、from survivor 0,、to survivor 1;
其中 Eden:from:to = 8:1:1。
线程私有
pc寄存器,虚拟机栈,本地方法栈。

未完待续(如有错误的地方,请各位大佬批评指正,同时感谢陈树义大佬分享的学习资料)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值