Java入门之了解JVM(23)
JVM内存模型划分规范
图片源自网络
可以看出,在JVM内存模型规范中,可以将整个JVM运行时数据库划分为2种类型
线程共享数据区域:
方法区用于存放已被加载的:类信息、静态变量、即时编译产生的代码方法区其实位于堆内存中,但它却叫No-Heap(非堆),这个主要是因为方法区存储的内容和JVM其管理策略方面和其它的堆内存稍有不同(谈GC再说这问题)需要注意1:在Sun HotSpot虚拟机的实现中,方法区被称为永久代,寓意为用于存放“永久”信息的区域需要注意2:在JDK8中,永久代被MetaSpace(元空间)所取替,即JDK8后方法区的实现叫元空间;永久代被取替的主要原因是,GC本来就很少光顾永久代(只有Full GC时才清理垃圾),而永久代又有-XX:MaxPermSize上限,所以大大加大了内存溢出(OutOfMemoryError)的机率;而MetaSpace(元空间)位于物理内存,如果不限定空间上限,原则上受限于物理内存的大小,由此降低了内存溢出的可能运行时常量池运行时常量池是位于堆(JDK 1.6以后,可以通过OOM错误来观察位置)还有特别要注意的是,所谓的字符串常量池还有装箱类中的valueOf()中的缓存都位于这里堆内存存放几乎所有的Java对象(小部分经过内存逃逸分析(属于JIT优化),可以在虚拟机栈中分配到内存)线程隔离数据区域:
推荐阅读
- 唐僧|tap评分高达9.1,《黑色沙漠》手游终于要来了,你了解了吗?
- viper|最佳外援是VIPER,新任FMVP坐不住了?本土选手机制了解一下
- lpl|LPL为何处理不了猫咪,自身了解太浅,根本不重视S11!
- 传奇|我们玩传奇3不仅仅是游戏,更是情怀和回忆,这款手游你了解吗?
- t1|vivo T1究竟值不值得购买?看了这些后你可能有更深了解
- 使命召唤18|王者荣耀 想要轻松上分英雄克制关系了解一下 公孙离克制上官婉儿
- 暗黑破坏神2|《暗黑破坏神2》七种职业!那个才是最适合新手的入门职业!
- s6|金铲铲之战:测试服内容抢先看,5分钟带你了解S6赛季的变化
- 电影|“王者宇宙”全面开启,三分钟了解官方后续动作,你想要的全都有
- 米哈游|米游社三周年,米哈游游戏的必备软件,你了解多少?