面向对象内存分析
java虚拟机的内存可以分为三个区域:栈stack(当中有栈帧),堆heap,方法区method area
栈的概念和特点
堆的概念和特点
内存分析
上图中,栈内的stu和c1创建对象时调用的构造方法已经关闭,而main方法运行结束后栈内的main的栈帧也将删除
注意:
方法区到底在不在堆内存当中?
三种情况:
-
java7之前,方法区位于永久代(PermGen),永久代和堆相互隔离,永久代的大小在启动JVM时可以设置一个固定值,不可变;
-
java7中,static变量从永久代移到堆中;
-
java8中,取消永久代,方法存放于元空间(Metaspace),元空间仍然与堆不相连,但与堆共享物理内存,逻辑上可认为在堆中
注:部分图片截取为 北京尚学堂名师-高淇老师-java300集