Java学习笔记

《深入理解Java虚拟机》学习笔记(一)(Java内存区域的划分

2017-03-08  本文已影响87人  码梦的一生

前言

本文章部分引用自

Java内存区域

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据域,包括程序计数器Java虚拟机栈本地方法栈Java堆方法区。其中程序计数器、Java虚拟机栈和本地方法栈是线程隔离的数据区,方法区和Java堆是线程共享的数据区。

**图1 Java内存区域划分示意图**
更进一步,Java内存最主要的三个部分主要是堆、栈和方法区,三个部分结构示意图如下: 图2 Java内存主要结果示意图

可以看到,堆空间分为新生代和老年代。新生代又分为Eden、From Survivor 0, To Survivor 1。方法区则被称为永久代 JDK1.8,HotSpot已经将永久代给移除,用元空间(MetaSpace)作为对方法区的实现。在JDK1.7时,就已经将部分数据(如字符串常量池)转移到堆中了。两者的比较主要如下:

程序计数器

Java虚拟机栈

本地方法栈

Java堆

方法区

运行时常量池

直接内存

异常的发生情况

上一篇下一篇

猜你喜欢

热点阅读