Java虚拟机(面试:JVM调优部分)(学习一:虚拟机的基础概念以及class文件结构)

虚拟机基础概念

1.什么是虚拟机
2.流行的java虚拟机
3.从跨平台的语言到跨语言的平台
4.虚拟机知识体系

class文件结构

1.MagicNumber
2.ConstantPool
3.AccessFlags
4.Fields
5.Methods
6.常用工具

一:jvm基础

java从编码到执行

 首先给你们讲一下这个过程。我们有一个X.java的文件,通过javac变成X.class。X.class会通过java命令会被ClassLoader装载到内存里。其中呢就会有java的一些类库之类的,然后ClassLoader通过解释器和编译器执行引擎。(理解即可,不需要死记硬背)

二.JVM(跨语言的平台)

 像我们所使用或者见到的那些语言都是可以在JVM上运行的。

三.JVM与class文件格式

1.jvm与java无关(只跟class有关)

 有人会问其他语言也是都编译成.class吗??

是的,必须是class文件,不一定是编译成的class文件,有的是下执行过程中产生的二进制流文件也会被JVM执行。

2.jvm是一种规范

        --The Java® Virtual Machine Specification (oracle.com)

        --The Java® Language Specification (oracle.com)

是虚构出来的一台计算机

        --字节码指令集(汇编语言)

        --内存管理:栈,堆 方法区等

四.常见的JVM实现

 我们最常用的就是Hotspot

 普及一下小知识点:LiquidVM针对硬件所以它的速度更快。azul旗下的zing是面对商业的,是收费的。速度最快可达1ms,这也就是为什么后面我们要讲的垃圾回收机制GC啦!

五.JDK JRE JVM三者之间的关系

jvm就是java虚拟机只是用来执行的。jre是运行时环境,也就是在运行时除了jvm还需要一些java的运行类库;jdk是在jre基础上的开发的工具。

六.Class File Format(了解一下,目前面试没有面到过,当做兴趣学习)

先看一段简单的代码以及它编译后的Class文件

 源文件:

package com.tiantian.jvm.bytecode;

public class T0100_ByteCode01{
}

 Class文件:

package com.tiantian.jvm.bytecode;

public class T0100_ByteCode01{
    public T0100_ByteCode01(){
    }
}

用class查看是这个代码,如果用十六进制看的话就是

 查看十六进制格式的ClassFile         subline或者是nodepad++ 和 idea插件BinED

二进制字节流:0/1组成

数据类型:u1 u2 u4 u8和_info(表类型)

七.Class文件结构:

1.Magic Number      ** class文件的magic Number就是CA FE BA BE **

2.Minor Version

3.Major Version   jdk1.8编译出来就是52  (十六进制0034转化为二进制就是52.0)

4.constant_pool_count   **常量池有哪些数,可以存多少数**

5..constant_pool长度为constant_pool_count-1的表

6.access_flags    是否是public final super interface abstract synthetic annotation enum

 

 

7.this.class     当前的class文件指到常量池里文件的内容

8.super_class     副类指到常量池的内容

9.interfaces_count

10.interfaces

11.fields_count

12.fields

13.methods_count

14.methods

15.attributes_count-u2

16.attributes

 (此时的constant_pool_count中是从1开始计数的)

有显示class文件的,比如javap,JBE可以直接修改,JClassLib(IDEA插件)

常量池理解:鉴这篇:这一次,彻底弄懂java中的常量池 - 掘金 (juejin.cn)

非常详细!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值