Java堆

Java堆是虚拟机所管理的内存中最大的一块。

Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。

此内存区域的唯一目的就是存放对象实例,Java中几乎所有的对象实例都在这里分配内存。
随着Java的发展,即时编译技术的进步,Java对象实例分配在堆上慢慢变得不是那么绝对。

Java堆是垃圾收集器管理的内存区域,因此它也被称作GC堆

《Java 虚拟机规范》中,Java堆可以处于物理上不连续的内存空间,但是在逻辑上它应该是被视为连续的。
但是对于大对象(典型的如数组对象),多数虚拟机实现出于实现简单、存储高效的考虑,很可能会要求联系的内存空间。

Java堆既可以被实现成固定大小的,也可以是可扩展的
不过当前主流的Java虚拟机都是按照可扩展来实现(通过参数-Xmx和-Xms设定)。

如果在Java堆中没有内存完成实例分配,并且堆也无法再扩展时,Java虚拟机将会抛出OutOfMemoryError异常。

posted @ 2021-01-31 14:35  张三丰学Java  阅读(315)  评论(0编辑  收藏  举报