java内存区域与内存溢出异常

    

java的运行机制 (过程)

 

  java代码先被转化成.class文件,在JIT编译前被加载处理。

java虚拟机所管理的内存包括(运行时数据区

1)程序计数器: 当前线程所执行的字节码的行号指示器,字节码解释器通过改变这个计数器的值来选取吓一跳需要执行的字节码指令。

2)java虚拟机栈:就是平时所说的栈,描述的是java方法(也就是字节码)执行的内存模型,每个方法执行时会创建一个栈帧,用来存储局部变量表,操作栈,动态链接,方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

3)本地方法栈:为虚拟机使用到的Native方法服务。

4)java堆:是java虚拟机所管理最大的一块内存,java堆是所有线程共享的一块区域,在虚拟机启动时创建,目的是存放对象实例,java堆可处于物理上不连续的内存空间中,逻辑上连续即可。

5)方法区:各个线程共享的内存区域,存储已被虚拟机加载的类信息,常量,静态变量,即使编译器变异后的代码等数据。这个区域内存回收主要目标是:针对敞亮池的问题回收和对类型的卸载。

 

  

posted @ 2017-07-18 11:36  c++c鸟  阅读(102)  评论(0)    收藏  举报