JVM是JAVA语言的核心与基础,也是JAVA语言也有的魅力,JVM完成了内存的动态分配与垃圾回收技术,借用周志明的一句话:JAVA与C++等语言之间有一睹由动态内存分配和垃圾回收技术围城的“高墙”,墙外的人想进来,墙里的人想出去。了解JVM对于每一个JAVA程序员来说都是非常有意义的一件事。故笔者计划整理一个JVM系列文章,方便各位读者查阅,同时也非常欢迎各位批评指正共同进步。
本篇属于java虚拟机系列第一篇,本章的主要内容是梳理清楚java运行时内存区域,搞清楚jvm内存的划分以及每个区域的主要存储内容,本系列所说的虚拟机主要围绕Hotspot虚拟机jdk1.7版本,还望各位读者记住这个前提。
内存区域
关于jvm内存区域,首先附上一张图:
内存区域划分
jvm粗粒度的划分可以分为如上图的几个区域:
堆、方法区(包含运行时常量池)、虚拟机栈、本地方法栈、程序计数器
线程角度分类
- 线程共享区域:
堆、方法区 - 线程私有区域:
虚拟机栈、本地方法栈、程序计数器
内存区域详解
- 堆
堆是J