JVM学习笔记-从底层了解程序运行

1:JVM基础知识
什么是JVM
    1. java虚拟机,跨语言的平台,实现java跨平台
    2. 可以实现多种语言跨平台,只要该语言可以编译成.class文件
    3. 解释执行.class文件
java是跨平台的语言,JVM是跨语言的平台
  
 
 

 JVM运行流程

1. preparation 默认值=>初始值=>
    2. 类加载器(jvm是按需动态加载,采用双亲委派机制,自底向上检查该类是否已经加载)
    3. 为什么要使用双亲委派,为了安全
    4. 自定义ClassLoader(customer Class Loader)=>classpath指定内容(App)=>加载扩展包(jre.lib.ext *.jar)=>加载rt.jar等核心包(BootStrap)
 
 
 

 常见的JVM

    1. Hotspot oracle
    2. Jrocket BEA被oracle收购
    3. J9 IBM
    4. VM Microsoft
    5. TaobaoVM 阿里
    6. LiQuidVM 直接针对硬件 oracle
    7. zing azul最新垃圾回收的业界标杆
2:ClassFileFormat
数据类型:u1 u2 u4 u8和_info(表类型)
    1. _info的来源是hotspot源码中的写法
查看16进制格式的ClassFile
    1. sublime/notepad/
    2. IDEA插件-BinEd 
有很多可以观察ByteCode的方法
    1. javap
        javap -v E:\JVM\out\production\JVM\com\bytecode\T0100_ByteCode01.class
      
 
 

     2. JBE-可以直接修改

    3. JClassLib-IDEA插件
    4. classfile组成
ClassFIle{
  u4 magic;
  u2 miner_version;
  u2 major_version;
  u2 constant_pool_count;
  cp_info constant_pool[constant_pool_count - 1];
  u2
 }
    5. 二进制文件详解
    
 
  
 

猜你喜欢

转载自www.cnblogs.com/hikoukay/p/12820175.html
今日推荐