美文网首页
JVM那些事儿-堆内存(三)

JVM那些事儿-堆内存(三)

作者: 久伴我还是酒伴我 | 来源:发表于2022-03-24 15:30 被阅读0次

简介

对于大多数应用来说,Java堆是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。


image.png

堆结构

image.png

堆内存大小

初始堆大小为系统内存64/1,堆内存最大为系统内存4/1;
具体可以参考该代码

        long initialHeapSize = Runtime.getRuntime().totalMemory();

        long maxHeapSize = Runtime.getRuntime().maxMemory();
        // 初始堆大小
        System.out.println("-Xms = " + initialHeapSize / 1024 + "kb or " + initialHeapSize / 1024 / 1024 + "mb");
      // 最大堆内存
        System.out.println("-Xmx = " + maxHeapSize / 1024 + "kb or " + maxHeapSize / 1024 / 1024 + "mb");

最好初始化堆大小和最大内存设置一致

控制参数

-Xms设置堆的最小空间大小。

-Xmx设置堆的最大空间大小。

-XX:NewSize设置新生代最小空间大小。

-XX:MaxNewSize设置新生代最大空间大小。

-XX:PermSize设置永久代最小空间大小。

-XX:MaxPermSize设置永久代最大空间大小。

-Xss设置每个线程的堆栈大小。

没有直接设置老年代的参数,但是可以设置堆空间大小和新生代空间大小两个参数来间接控制。

老年代空间大小=堆空间大小-年轻代大空间大小

相关文章

  • JVM那些事儿-堆内存(三)

    简介 对于大多数应用来说,Java堆是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存...

  • 2018-03-24

    Java学习随笔4 JVM的内存分配: 首先,jvm的内存主要分为三大块:堆,栈,方法区。 堆:jvm内存中最大的...

  • JVM 内存结构解析

    1. JVM内存结构 (1) JDK1.7的JVM内存结构 JVM内存结构主要有三大块:堆内存、方法区和栈。 堆内...

  • JVM学习笔记

    一、JVM的结构图 1.1 Java内存结构 JVM内存结构主要有三大块:堆内存、方法区和栈。堆内存是JVM中最大...

  • JVM如何分配和回收堆外内存

    JVM内存模型 在JVM中内存被分成两大块,分别是堆内存和堆外内存,堆内存就是JVM使用的内存,而堆外内存就是非J...

  • 高级Java开发面试常用题的答案2

    三、JVM · JVM堆的基本结构。 java_heap_struct.jpg 参考阅读:JVM内存堆布局图解分析...

  • Java大佬之学习历程(一)

    基础篇 JVM: ①JVM内存结构: 堆、栈、方法区、直接内存、堆和栈区别, ②JVM参数及...

  • JVM内存结构

    JVM内存结构主要有三大块:堆内存、方法区和栈. 从上图 可以看出, 堆内存在JVM内存中所占比例最大, 它由轻代...

  • JVM内存结构

    JVM的内存结构主要是三大块:堆内存、方法区和栈。 堆内存:JVM中最大的一块,由年轻代和老年代组成。年轻代又有三...

  • Java 工程师成神之路(2018 年修订版)

    基础篇 1.1 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别。 Java内存模型 内存可见性、重排...

网友评论

      本文标题:JVM那些事儿-堆内存(三)

      本文链接:https://www.haomeiwen.com/subject/qrftjrtx.html