标签:image 动态 ued 入口 dtp 12c gen dsc dup2
Java体系分为四个平台
Java 代码编译和执行有下面三个过程
下面就分别对着三个过程进行详细的介绍
Java源码编译机制
流程如下
class 文件的由下面的部分组成
类加载机制
JVM的类加载时根据ClassLoader及其子类来完成的
下面就对加载结构的几个模块进行介绍
1)Bootstrap ClassLoader
负责加载$JAVA_HOME中jre/lib/rt.jar
2)Extension ClassLoader
加载扩展功能的一些 jar 包
3)App ClassLoader
负责加载classpath中指定的jar包
4)Custom ClassLoader
属于应用程序根据自身需要自定义的 ClassLoader,如 Tomcat
类执行机制
。。。。。。
Java将内存分为以下几个运行时数据区
下面对几个区域进行介绍
程序计数器
利用程序计数器的值选择下一条指令,来实现一些基础功能。每个线程都有独立的程序计数器,各个线程间的程序计数器互不影响
Java 虚拟机栈
线程私有的,它的生命周期也与线程相同。
虚拟机栈描述的是 Java 方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧,栈它是用于支持续虚拟机进行方法调用和方法执行的数据结构。
Java 虚拟机规范中,对这个区域规定了两种异常情况
栈帧 中存的部分信息
本地方法栈
虚拟机栈为虚拟机执行 Java 方法服务,而本地方法栈则为使用到的本地操作系统(Native)方法服务。
Java堆
所有线程共享的一块内存区域,几乎所有的对象实例和数组都是在这一类分配内存.
而且Java 堆是GC进行内存收集的主要地方.
方法区
方法区也是各个线程共享的内存区域,它用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
直接内存
虚拟机运行内存外的内存.
内存溢出 几个特点和测试方法
对象实例化分析
根据实例一个对象来分析内存的分配
1.Object obj = new Object();
类加载到卸载的过程
加载、验证、准备、解析、初始化、使用和卸载七个阶段
加载的过程是加载、验证、准备、解析、初始化 这五个阶段,
有些情况下要使用Java中的绑定 : 绑定指的是把一个方法的调用与方法所在的类(方法主体)关联起来 .绑定分为静态绑定和动态绑定.
加载
加载阶段,虚拟机啊需要完成的三件事情
类加载器大致分为三种
几种类加载器的层次关系
这种层次关系称为类加载器的双亲委派模型
双亲委派模型的工作流程
验证
验证Class文件字节流符合虚拟机要求
验证的四个阶段
准备
为类变量分配内存并设置类变量初始值,在方法区分配
解析
虚拟机将常量池的符号引用转为直接引用
初始化
初始化阶段是执行类构造器方法的过程
标签:image 动态 ued 入口 dtp 12c gen dsc dup2
原文地址:http://www.cnblogs.com/wangshouchang/p/7599533.html