• JVM学习(宋红康)之堆空间概述


    堆的核心概述

    • 一个进程对应一份方法区和堆及JVM实例,一个进程中有多个线程,每个线程都有自己的程序计数器、虚拟机栈、本地方法区。

    堆空间的核心概述:

    • 注意,堆空间中并不是所有内容都是共享的,在TLAB中的内容是每个线程一份,线程私有的。

     

    • 几乎所有的对象实例及数组都分配在堆上,由于后期JVM迭代优化,出现了逃逸分析等,会存在在栈上分配的情形。

     

    • 方法结束后,对应方法的栈帧从栈中弹出,此时该引用指向堆中的空间不会立刻消失,而是等到GC时,再回收。

    堆的内存细分:

    Java7及以前版本堆在内存逻辑上分为:新生区+养老区+永久区

    Java8及以后堆在内存逻辑上分为:新生区+养老区+元空间

    设置堆空间的大小:

    • -Xms:用来设置堆空间(新生代+老年代)的初始内存大小

           -X 是JVM的运行参数

           ms 是memory start

    • -Xmx:用来设置堆空间(新生代+老年代)的最大内存大小

    • 默认堆空间的大小:

           初始内存大小:   物理电脑内存/64

           最大内存大小:  物理电脑内存/4

    • 开发中建议将初始堆内存和最大堆内存设置为相同的值
    • 查看设置的参数:

    方式1: 使用cmd命令行【1】jps  【2】jstat -gc 进程id

    方式2:-XX:PrintGCDetails

  • 相关阅读:
    JS面向对象---原型链继承
    使用CodeFirst连接Mysql
    腾讯会议如何在Linux下安装与使用
    拒绝服务攻击工具
    刷题记录:牛客NC20276[SCOI2010]传送带
    五分钟教你使用GitHub寻找优质项目
    湖仓一体数据平台架构
    G882磁力仪拖鱼位置是如何计算的?
    【软考】数据通讯基础1
    Linux查看指定端口是否被占用
  • 原文地址:https://blog.csdn.net/m0_55895641/article/details/126690490