jvm优化(一)

什么是jvm?

java程序自己独立运行环境,包括堆栈、寄存器和java字节码的指令集。

 

jvm上可以运行的语言

  • Java
  • Scala
  • Groovy

 

jvm、jdk和jre

jvm:jvm是jre的一部分

jre:java运行环境,包含jvm

jdk:包含

  • jre
  • jvm
  • 常用的一些开发工具,javac、java和jconsol等等

 

生命周期

  main方法是jvm实例运行的起点,main作为程序初始线程的起点,任何其他线程都由该线程负责启动,main线程是非守护线程。

  jvm实例消亡的方法:

  • 所有的非守护线程都终止时
  • System.exit()

 

组成

  • 类加载器子系统(class loader)
  • 执行引擎子系统
  • 运行时数据区(runtime data area)
  • Native接口

 

运行流程

  1. 首先将java源代码通过javac指令编译成字节码文件
  2. 字节码文件通过class loader进行加载
  3. 将类的权限修饰类名成员变量修饰成员变量方法修饰方法参数方法返回值等等放入运行时数据区的方法区;将new出来的对象放入中,类的静态变量放入常量池中;将对象索引放入VM栈里;调用本地方法放入本地方法栈PC寄存器根据线程数分配,用于存放代码读取行数
  4. 执行引擎根据运行时数据区调用本地库接口和本地方法库

 

Class loader

负责加载字节码到jvm中,根据类中定义的内容分配到不同的运行时数据区

分类:

  • Bootstrap ClassLoader:classLoader的根,rt.jar
  • Extension ClassLoader
  • Application ClassLoader
  • 用户自定义类加载器

加载过程:

  1. 加载  负责找到class文件,并加载到jvm中
  2. 连接
    • 校验  确保类的格式正确
    • 准备  为类中的变量分配内存空间,并初始化默认值
    • 解析  符号引用转换为直接引用
  3. 初始化  执行静态代码块,构造器,静态属性,在调用new,反射调用类中的方法,子类调用初始化函数

转载于:https://www.cnblogs.com/huanStephen/p/8877963.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值