jvm内存模型:
JVM内存模型则是指JVM的内存分区。jvm内存模型 == jvm内存结构 == Java内存结构!!!汉语虽然博大精深,但是也经常会因为命名很雷同让人懵逼或者混淆不清。
jvm内存结构:
Java内存结构:
可以简单的理解成是虚拟机内存中分成了哪几部分,分别是干嘛的,然后再扩展讲讲关联的知识。
Java程序执行过程中,内存会被划分为不同的数据区域,各个区域有各自的用途。
- 有些区域随虚拟机的启动而存在
- 有些区域随线程的启动而启动,随线程的结束而销毁
需要注意的点
- Java虚拟机规范,不同的虚拟机实现可能不同,但是一般都会遵守规范。
- 规范中方法区只是一种概念上的区域,说明了其应该具有的功能,但并没有说明其具体应该位于何处。不同的虚拟机实现,会有一定的自由度。有些虚拟机是在堆内实现的。
- 运行时常量池用于存放编译期的各种字面值和符号引用。不过Java并没有要求常量只能在编译期才能产生,通过String.intern也能产生。
- 除了图中所列的内存区域,还有一块内存可供使用,那就是直接内存。JVM规范并没有定义这一块区域,所以并不由JVM管理