JVM内存的堆、栈和方法区

JVM的内存分为堆、栈、方法区和程序计数器4个区域

存储内容:基本类型,对象引用,对象本身,class,常量,static变量

堆:

拥有者:所有线程

内容:对象本身,不存放基本类型和对象引用

垃圾回收:由gc控制,java的垃圾回收主要针对堆

----------------------------------------------------------

栈:

分为虚拟机栈和本地方法栈

虚拟机栈:

java方法内存模型

拥有者:每个线程拥有一个

内容:基本数据,对象引用(最常用)

垃圾回收:程序自动出栈释放

本地方法栈:

为native方法服务

 ----------------------------------------------------------

方法区(静态区):

拥有者:所有线程

内容:class类型、常量、static变量(整个程序中唯一的元素)和常量池

备注:方法区属于一个逻辑概念,是堆的一个逻辑部分,不同虚拟机对其有不同的实现,例如jdk1.8之前HotSpot用“永久代”来实现方法区,在之后用“元空间”实现方法区

原文地址:https://www.cnblogs.com/yanze/p/9789865.html