前言理解Java中存放对象、变量等的内存区域非常重要。本文将全面讲解Java虚拟机中的内存模型&分区。我希望你会喜欢。.MemoryModel&PartitioningJava虚拟机在运行Java程序时,会管理一块内存区域:运行时数据区,运行时数据区会根据用途划分:Java虚拟机栈(栈区)本地方法栈Java堆(heaparea)方法区程序计数器示意图下面,我将详细介绍每个内存模型分区2.Java堆示意图DiagramIntroductionDiagram4.NativeMethodStackDiagramDiagramIntroduction非常类似于Java虚拟机栈,与Java虚拟机的区别在于:服务对象,即Java虚拟机栈服务于执行Java方法;本地方法栈用于执行Native方法5.方法区示意图Schematicdiagram简介示意图Note内部包含一个运行时常量池,具体介绍如下:示意图6.程序计数器示意图SchematicdiagramSchematic简介示意图7.补充知识:直接内存的定义:NIO类(JDK1.4引入)基于通道和缓冲区区域的I/O方法直接使用Native函数库进行分配。特点:不受堆大小限制,不属于虚拟机运行时数据区&不在堆中分配应用场景:适用于频繁调用的场景,通过一个存储在Java堆中的DirectByteBuffer对象作为对这块内存的引用进行操作,从而避免在Java堆和Native堆之间来回复制数据,提高性能。抛出的异常:OutOfMemoryError,即其他内存区域的总和大于物理内存限制8.总结本文全面讲解了JVM中的内存模型&分区,总结如下作者:Carson_Ho链接:https://juejin.im/post/6844903677279338509来源:掘金
