關于JVM默認堆內存大小問題
JVM默認堆內存大小
我們都知道jvm有一個堆內存的概念,我們可以通過-Xmx:最大堆內存,-Xms初始化堆內存來進行設置。
那么當我們不設置時默認是多少呢
堆內存
這里直接貼上官網(wǎng)jdk1.8的鏈接https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size
翻譯如下:
默認堆大小
除非在命令行上指定了初始堆大小和最大堆大小,否則它們將根據(jù)計算機上的內存量進行計算。
- 最大物理內存大小不超過192兆字節(jié)(MB)時默認最大堆大小是物理內存的一半,否則占用物理內存的四分之一
- 在32位JVM上,如果有4 GB或更多的物理內存,則默認的最大堆大小最多可以為1 GB。在64位JVM上,如果有128
- GB或更多的物理內存,則默認的最大堆大小最大為32 GB。
- 在JVM初始化期間分配了一個較小的值,稱為初始堆大小。此數(shù)量至少為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
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringBoot 如何使用Dataway配置數(shù)據(jù)查詢接口
這篇文章主要介紹了SpringBoot 如何使用Dataway配置數(shù)據(jù)查詢接口,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Java Chassis3過載狀態(tài)下的快速失敗解決分析
本文解密了Java Chassis 3快速失敗相關的機制和背后故事,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2024-01-01SpringBoot集成Flyway進行數(shù)據(jù)庫版本遷移管理的步驟
這篇文章主要介紹了SpringBoot集成Flyway進行數(shù)據(jù)庫版本遷移管理的步驟,幫助大家更好的理解和學習使用SpringBoot框架,感興趣的朋友可以了解下2021-03-03