关于JVM默认堆内存大小问题

 更新时间:2023年02月14日 08:42:42   作者:CRUD的W  
这篇文章主要介绍了关于JVM默认堆内存大小问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

JVM默认堆内存大小

我们都知道jvm有一个堆内存的概念,我们可以通过-Xmx:最大堆内存,-Xms初始化堆内存来进行设置。

那么当我们不设置时默认是多少呢

堆内存

这里直接贴上官网jdk1.8的链接https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size

翻译如下:

默认堆大小

除非在命令行上指定了初始堆大小和最大堆大小,否则它们将根据计算机上的内存量进行计算。

  • 最大物理内存大小不超过192兆字节(MB)时默认最大堆大小是物理内存的一半,否则占用物理内存的四分之一
  • 在32位JVM上,如果有4 GB或更多的物理内存,则默认的最大堆大小最多可以为1 GB。在64位JVM上,如果有128
  • GB或更多的物理内存,则默认的最大堆大小最大为32 GB。
  • 在JVM初始化期间分配了一个较小的值,称为初始堆大小。此数量至少为8 MB,否则为物理内存的1/64,最大为1 GB。
  • 分配给年轻代的最大空间量是堆总大小的三分之一,即年轻代和老年代默认的比例是1:2
  • 您可以使用-Xms(初始堆大小)和-Xmx(最大堆大小)来指定初始堆大小和最大堆大小。如果你知道你的应用程序有多少堆需要工作做好,你可以设置-Xms和-Xmx相同的值。否则,JVM将使用初始堆大小开始,然
  • 后将增大Java堆,直到找到堆使用率和性能之间的平衡为止。

以上就是在jdk1.8中的说明,但是在不同jdk版本和使用不同的垃圾收集器后或许会有调整

JVM默认分配堆内存是多少?

对于Java8来说,一般堆内存的初始容量为物理内存大小的1/64, 最大内存不超过物理内存的1/4或1G.

initial heap size

Larger of 1/64th of the machine's physical memory on the machine or some reasonable minimum. Before Java SE 5.0, the default initial heap size was a reasonable minimum, which varies by platform. You can override this default using the -Xms command-line option.

maximum heap size

Smaller of 1/4th of the physical memory or 1GB. Before Java SE 5.0, the default maximum heap size was 64MB. You can override this default using the -Xmx command-line option.

Note: The boundaries and fractions given for the heap size are correct for Java SE 5.0. They are likely to be different in subsequent releases as computers get more powerful.

参考:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java根据表达式获取对象中的值及设置值的例子

    Java根据表达式获取对象中的值及设置值的例子

    这篇文章主要介绍了Java根据表达式获取对象中的值及设置值的例子,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-03-03
  • Spring详细讲解@Autowired注解

    Spring详细讲解@Autowired注解

    @Autowired注解可以用在类属性,构造函数,setter方法和函数参数上,该注解可以准确地控制bean在何处如何自动装配的过程。在默认情况下,该注解是类型驱动的注入
    2022-06-06
  • Apache Maven3.6.0的下载安装和环境配置(图文教程)

    Apache Maven3.6.0的下载安装和环境配置(图文教程)

    本文主要介绍了Apache Maven3.6.0的下载安装和环境配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java设计模式之java组合模式详解

    Java设计模式之java组合模式详解

    这篇文章主要介绍了JAVA设计模式之组合模式,简单说明了组合模式的原理,并结合实例分析了java组合模式的具体用法,需要的朋友可以参考下
    2021-09-09
  • java.text.DecimalFormat用法详解

    java.text.DecimalFormat用法详解

    这篇文章主要为大家详细介绍了java.text.DecimalFormat用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Java中将String类型转换为int类型的几种常见方法

    Java中将String类型转换为int类型的几种常见方法

    在java中经常会遇到需要对数据进行类型转换的场景,这篇文章主要给大家介绍了关于Java中将String类型转换为int类型的几种常见方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • Java网络编程基础教程之Socket入门实例

    Java网络编程基础教程之Socket入门实例

    这篇文章主要介绍了Java网络编程基础教程之Socket入门实例,本文讲解了创建Socket、Socket发送数据、Socket读取数据、关闭Socket等内容,都是最基础的知识点,需要的朋友可以参考下
    2014-09-09
  • Spring Security认证的完整流程记录

    Spring Security认证的完整流程记录

    相信大伙对Spring Security这个框架又爱又恨,爱它的强大,恨它的繁琐,下面这篇文章主要给大家介绍了关于Spring Security认证流程的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • MyEclipse打开文件跳转到notepad打开问题及解决方案

    MyEclipse打开文件跳转到notepad打开问题及解决方案

    windows系统打开README.md文件,每次都需要右键选择notepad打开,感觉很麻烦,然后就把README.md文件打开方式默认选择了notepad,这样每次双击就能打开,感觉很方便,这篇文章主要介绍了MyEclipse打开文件跳转到notepad打开问题,需要的朋友可以参考下
    2024-03-03
  • Spring Boot 配置文件(application.yml、application-dev.yml、application-test.yml)

    Spring Boot 配置文件(application.yml、application-dev.y

    本文主要介绍了Spring Boot 配置文件,主要包含application.yml、application-dev.yml、application-test.yml,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03

最新评论