1.一个java文件通过前端编译器编译成.class文件。字节码文件,再通过类加载器加载到JVM中,生成相应的对象。接着就交给执行引擎,解释运行。执行引擎的作用,其实就是将高级语言翻译成机器语言,教给操作系统。
反编译字节码文件
第一步 通过cd 切到字节码对应的文件目录下
第二步骤 dir 查看目录下全部的文件
第三步骤 javap -v Demo.class
java由于跨平台设计,使用了栈这样一种设计,而非使用寄存器(寄存器与硬件耦合性更高,但是性能更高),所以它的指令集相对于寄存器这样的一种设计,指令集更多,性能要差一些。
JVM的生命周期的理解:
虚拟机启动
java虚拟机的启动是通过引导类加载器bootStrap class loader创建一个初始类initial class来完成的,这个类是由虚拟机的具体实现指定的,初始类中有一个main方法。
虚拟机执行
一个运行中的java虚拟机有着一个非常清晰的任务,执行java程序。
程序开始执行,它才运行。程序结束,它就停止,
执行一个所谓的java程序的时候,真正执行的是一个叫做jvm的虚拟机进程。
jps 会打印当前正在执行的进程。
进程号 进程名
虚拟机退出:
当程序正常执行结束时,
程序执行的过程中,遇到了异常或错误,而异常终止
由于操作系统错误,导致了Java虚拟机进程终止。
代码中执行了system.exit方法,或者线程中执行了Runtime类,或者Runtime类的halt方法,并且Java安全管理器允许这次的exit或halt操作
用户自定义的类是由系统类加载器加载的,Object是由引导类加载器架子啊的。父类会比子类更早加载。