java在运行之后,就将内存控制权交给了java虚拟机。 java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干不同的数据区域。 运行时的内存区分为以下几部分:
1. 程序计数器区域
程序计数器是一块较小的内存空间,是为当前线程所执行的字节码的行号指示器。 由于多线程的存在,所以每个线程都需要有一个独立的程序计数器。 各个线程之间的程序计数器互不影响,独立存储。 所以程序计数器的内存区域是线程私有的。
如果线程正在执行的是一个java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址。 如果执行的是native方法,则这个计数器为空。
2. java虚拟机栈
描述的是java方法执行的内存调用模型, java虚拟机栈也是线程私有,生命周期和线程相同。
3.本地方法栈
是虚拟机使用到Native方法服务的内存栈, 线程私有的。
4. java堆
也被称为GC堆, 是虚拟机所管理的最大一块内存,被所有线程共享,在虚拟机启动时创建,目的是存放对象实例。如果堆中的内存不足,则会抛出OutOfMemory的异常。
java堆属于线程共享的。
5.方法区
用于存储已经被虚拟机加载的信息:包括常量,静态变量,编译后的代码等数据。 也属于线程共享的。 运行时的常量池Runtime Constant Pool也是方法区的一部分。
相关推荐
本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟蹊径,不仅能让Java虚拟机的学习变得更加简单和有趣,而且能让你对Java虚拟机的原理认识更深入和更深刻!...
深入JAVA虚拟机,帮助大家在Java方面进行学习,深入JAVA虚拟机,帮助大家在Java方面进行学习,
深入理解Java虚拟机学习资料 pdf+mobi
Java虚拟机的深入研究。对那些想深入学习java的人,有很大的帮助
本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟蹊径,不仅能让Java虚拟机的学习变得更加简单和有趣,而且能让你对Java虚拟机的原理认识更深入和更深刻!...
第1章 Java体系结构介绍 第2章 平台无关 第3章 安全 第4章 网络移动性 第5章 Java虚拟机 第6章 Java class文件 ...附录D Java虚拟机的一个模拟:“Slices of Pi” 原码中的小程序是学习jvm非常好的工具
java虚拟机源码学习 Understanding the JVM 深入理解Java虚拟机第三版 (周志明)源码及学习笔记
long果 深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理)。讲解相当详细,值得一看。下载仅供参考学习,侵权联删。
该文档是本人的学习笔记,尚未精修,后续会精修排版. 学习笔记:深入浅出 Java 虚拟机.docx
深入理解Java虚拟机学习笔记借鉴.pdf
书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的必读之作。 《Java核心技术系列:Java虚拟机规范(Java SE 8版)》共分7章。第1章从宏观的角度介绍了Java...
理解Java虚拟机的很好的书 光盘的内容是不可缺少的学习资料
这是对学习Java虚拟机的很好的入门书。虚拟机的书很少,除了规范之外,就很少见了。
Java虚拟机规范(Java_SE_7)中文版,帮助很多爱好java虚拟机的同学深入学习java虚拟机
深入理解Java虚拟机详细视频教程,包括jvm性能调优、Java内存模型及虚拟机原理。有详细的文档资料,配合深入理解Java虚拟机书籍学习效果更佳
公司技术团队培训:深入学习java虚拟机
, 本书是继《深入理解Java虚拟机》之后的又一经典著作,它一方面遵循《Java虚拟机规范》,一方面又独辟蹊径,不仅能让Java虚拟机的学习变得更加简单和有趣,而且能让你对Java虚拟机的原理认识更深入和更深刻!...
诸葛_BAT面试之深入理解Java虚拟机_9
深入JAVA虚拟机(随书源代码) 值得学习深入