当前位置:首页 > 内存 > 正文

堆内存划分(堆内存存储什么)

  • 内存
  • 2024-08-29 04:58:37
  • 8623

一、Java的堆内存是什么?Java堆(JavaHeap)是java虚拟机管理的一大块内存
java堆是所有线程共享的一块内存区域
java堆是在虚拟机启动时创建的
Ejava栈的唯一部分目的是存储对象实例。
Java收集是垃圾收集器管理的主要区域。
从内存回收的角度来看,由于目前的收集器基本都采用分代堆算法,因此Java堆可以分为:新生代(new)和老生代(old)。新生代分为三个区域:Eden、FromSurvivor、ToSurvivor等。不管如何分配,实例对象最终都会被保留。进一步分配的目的是更好地回收内存或更快地分配内存。
java堆大小是可扩展的,由-Xmx和-Xms控制。
如果没有足够的堆内存来分配实例对象并且该对无法扩展,则会抛出outOfMemoryError异常。
二、Java把如何把内存划分为4个部分?

Java将内存分为以下4部分:

1.栈段(stacksegment):由编译器自动分配和释放,存放函数参数的值、局部变量的值等,是具体方法执行完毕后,系统自动释放JVM内存资源。

2.堆段:一般由程序员分配和释放,用于存储NewJVM创建的对象和数组,时不时检查这个对象,如果没有这个对象的引用则回收它。

3.静态区(数据段):存放全局变量、静态变量、字符串常量,且不释放。

gment:存储程序中方法的二进制代码,多个对象共享一段代码空间区域。