程序计数器,虚拟机栈,本地方法栈,堆,方法区 
   
 
1、程序计数器
 线程私有 ,即每个线程都会有一个,线程之间互不影响,独立存储。 
代表着当前线程所执行字节码的行号指示器。
2、虚拟机栈
 线程私有 , 它的 生命周期和线程相同 。 
 描述的是 java 方法执行的内存模型 :每个方法在执行的同时多会创建一个栈帧用于存储局部变量表、操作数栈、动态链表、方法出口等信息。每一个方法从调用直至完成的过程,就对应着一个栈帧在虚拟机中入栈到出栈的过程。 
3、本地方法栈
同虚拟机栈,只不过本地方法栈位虚拟机使用到的 native 方法服务。
4、 java 堆
 线程共享 主要用于分配对象实例和数组 
5、方法区
 线程共享 用于存储已被虚拟机加载的类信息、常量、静态变量、即使编译后的代码等数据。 
 
 
 Java 认为 Checked 异常 都是可以被处理的异常,所以 Java 程序必须显示处 
理 Checked 异常。如果程序没有处理 Checked 异常,该程序在编译时就会
发生错误无法编译。我们比较熟悉的 Checked 异常有
Java.lang.ClassNotFoundException 
  NoSuchMetodException 
  IOException 
   Runtime 异常如除数是 0 和数组下标越界等,其产生频繁,处理麻烦,若显 
示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动
检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示
捕获它们。我们比较熟悉的 RumtimeException 类的子类有
Java.lang.ArithmeticException 
  ArrayStoreExcetpion 
  ClassCastException 
  IndexOutOfBoundsException 
  NullPointerException 
   Error 是 throwable 的子类,代表编译时间和系统错误,用于指示合理的应用程序不应该试图捕获的严重问题。当程序发生 不可控的错误时 ,通常做法是通知用户并中止程序的执行。与异常不同的是, Error 及其子类的对象不应被抛出。 Error 由 Java 虚拟机生成并抛出 ,包括动态链接失败,虚拟机错误等。程序对其不做处理。