java运行机制

作者: Suavitygogo | 来源:发表于2017-03-04 16:30 被阅读9次

    1、安装jdk1.6及以上

    http://blog.csdn.net/hjx5200/article/details/21941425

    http://blog.csdn.net/nomousewch/article/details/7885388

    java运行机制:

    1、编译:jdk的javac进行编译  javac  java文件名路径  eg: javac D:\HelloWorld.java

    编译成字节码

    2、运行:包括类加载和类执行 java 文件名  eg: java D:\HelloWorld

    根据Path中所配置的jdk路径找的其bin目录下的java.exe程序,然后再初始化一些java参数(比如CLASSPATH、虚拟机参数等)。

    java.exe程序分配内存并启动jre/bin目录下client目录或者server目录(取决于第一步中的虚拟机参数)下的jvm.dll,java虚拟机开始启动,开始类加载、运行。

    类加载:加载、连接、初始化

    加载:首先加载java虚拟机默认加载类(java API:主要分布在jre/lib下,第一个被载入的java类是Object类,有时还会加        载jre/lib/ext下的jar包--可通过以下命令查看java API加载类:java -verbose:class

    然后开始加载自定义类(包括运行类和第三方jar包类)通过环境配置找到字节码文件,将字节码加载        到jvm内存区:

    主类信息保存在运行时数据区的方法区(包括class的版本号,常量池,方法的字节码)

    静态变量、对象的引用(实例化后的对象)保存在stack栈中,

    非静态变量、方法、对象放入堆中。

    连接:

    验证字节码是否符合java规范,数据类型是否有效,继承和实现是否合乎标准。在这个阶段还为类的静态变量分配空间,并将其设置成JVM的默认值。对于非静态变量则不会赋值。

    在jvm中各类型的初始值如下:

    int,byte,char,long,float,double 默认初始值为0

    boolean 为false(在jvm内部用int表示boolean,因此初始值为0)

    reference类型为null

    final static基本类型或者String类型,则直接采用常量值(这实际上是在编译阶段就已经处理好了)

    相关文章

      网友评论

        本文标题:java运行机制

        本文链接:https://www.haomeiwen.com/subject/lmkjgttx.html