java运行机制

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类型,则直接采用常量值(这实际上是在编译阶段就已经处理好了)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,954评论 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 7,593评论 0 11
  • JVM体系结构 JVM是一种解释执行class文件的规范技术。 我翻译的中文图: 类装载器子系统 在JVM中负责装...
    zhazhaxin阅读 14,039评论 7 69
  • 《深入理解Java虚拟机》笔记_第一遍 先取看完这本书(JVM)后必须掌握的部分。 第一部分 走近 Java 从传...
    xiaogmail阅读 10,610评论 1 34
  • 曾经,路上,遇见过。 那时,青涩,忘记了怎么相知,忘记了怎样相遇。也许,冥冥之中,有太多注定! 记得,青春,萌发的...
    淡淡_99f7阅读 1,371评论 0 0