图解带你掌握`JVM`运行时核心内存区
摘要:堆空间差不多是最大的内存空间,也是运行时数据区最重要的内存空间。堆可以处于物理上不连续的内存空间,但在逻辑上它应该被视为连续的。 本文分享自华为云社区《醒酒菜:动画图解核心内存区--堆》,作者: 阿Q说代码。 堆的概述 一般来说: 一个Java程序的运行对应一个进程; 一个进程对应着一个JVM实例(JVM的启动由引导类加载器加载启动),同时也对应着多个线程; 一个JVM实例拥有一个运行时数据区(Runtime类,为饿汉式单例类); 一个运行时数据区中的堆和方法区是多线程共享的,而本地方法栈、虚拟机栈、程序计数器是线程私有的。 堆空间差不多是最大的内存空间,也是运行时数据区最重要的内存空间。堆可以处于物理上不连续的内存空间,但在逻辑上它应该被视为连续的。 在方法结束后,堆中的对象不会马上被移除,仅仅在垃圾收集的时候才会被移除。堆,是GC(Garbage Collection,垃圾收集器)执行垃圾回收的重点区域。 堆内存大小设置 堆一旦被创建,它的大小也就确定了,初始内存默认为电脑物理内存大小的1/64,最大内存默认为电脑物理内存的1/4,但是堆空间的大小是可以调节,接下来我们来演示...



