开发者

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

开发者 https://www.devze.com 2023-02-14 10:43 出处:网络 作者: CRUD的W
目录JV开发者_C学习M默认堆内js存大小堆内存JVM默认分配堆内存是多少?总结JVM默认堆内存大小
目录
  • JV开发者_C学习M默认堆内js存大小
    • 堆内存
  • 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将使用初始www.devze.com堆大小开始,然
      • 后将增大Java堆,直到找到堆使用率和性能之间的平衡为止。

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

      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 cSmzfureasonable 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.

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

      总结

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

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号