JVM虚拟机------运行时数据区------堆

知识点

  1. 多线程共享一个堆内存,且是最大的内存空间
  2. Java内存管理的核心区域
  3. 在JVM启动的时候创建、大小确定(但是可以调节)
  4. 《Java虚拟机规范》规定:堆可以处于物理上不连续的内存空间中,当在逻辑上它应该被视为连续的
  5. 其实在堆中,存在线程私有的缓冲区------》Thread Local Allocation Buffer, TLAB.
  6. “几乎”所有的对象实例都在这里分配内存。
  7. 栈帧中只会保留引用,这个引用指向对象或者数组的堆中的位置
  8. 方法结束后,堆中的对象不会马上被移除,仅仅在垃圾收集的时候才会被移除
  9. 堆,是GC执行垃圾回收的重点区域

步骤:

  1. .class文件通过类加载到方法区中
  2. 栈根据方法区的类,实例化对象,对象的信息存储在堆当中

堆内存----细分

JDK7

新生区:Edn区、Survivor1、Survivor2

养老区:

永久区:--------在方法区当中

JDK8

新生区:Edn区、Survivor1、Survivor2

养老区:

元空间:--------在方法区当中

 设置堆空间大小

“-Xms”

“-Xmx”

猜你喜欢

转载自www.cnblogs.com/sicheng-li/p/12977109.html