關(guān)于JVM默認(rèn)堆內(nèi)存大小問(wèn)題
JVM默認(rèn)堆內(nèi)存大小
我們都知道jvm有一個(gè)堆內(nèi)存的概念,我們可以通過(guò)-Xmx:最大堆內(nèi)存,-Xms初始化堆內(nèi)存來(lái)進(jìn)行設(shè)置。
那么當(dāng)我們不設(shè)置時(shí)默認(rèn)是多少呢
堆內(nèi)存
這里直接貼上官網(wǎng)jdk1.8的鏈接https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size
翻譯如下:
默認(rèn)堆大小
除非在命令行上指定了初始堆大小和最大堆大小,否則它們將根據(jù)計(jì)算機(jī)上的內(nèi)存量進(jìn)行計(jì)算。
- 最大物理內(nèi)存大小不超過(guò)192兆字節(jié)(MB)時(shí)默認(rèn)最大堆大小是物理內(nèi)存的一半,否則占用物理內(nèi)存的四分之一
- 在32位JVM上,如果有4 GB或更多的物理內(nèi)存,則默認(rèn)的最大堆大小最多可以為1 GB。在64位JVM上,如果有128
- GB或更多的物理內(nèi)存,則默認(rèn)的最大堆大小最大為32 GB。
- 在JVM初始化期間分配了一個(gè)較小的值,稱(chēng)為初始堆大小。此數(shù)量至少為8 MB,否則為物理內(nèi)存的1/64,最大為1 GB。
- 分配給年輕代的最大空間量是堆總大小的三分之一,即年輕代和老年代默認(rèn)的比例是1:2
- 您可以使用-Xms(初始堆大?。┖?Xmx(最大堆大小)來(lái)指定初始堆大小和最大堆大小。如果你知道你的應(yīng)用程序有多少堆需要工作做好,你可以設(shè)置-Xms和-Xmx相同的值。否則,JVM將使用初始堆大小開(kāi)始,然
- 后將增大Java堆,直到找到堆使用率和性能之間的平衡為止。
以上就是在jdk1.8中的說(shuō)明,但是在不同jdk版本和使用不同的垃圾收集器后或許會(huì)有調(diào)整
JVM默認(rèn)分配堆內(nèi)存是多少?
對(duì)于Java8來(lái)說(shuō),一般堆內(nèi)存的初始容量為物理內(nèi)存大小的1/64, 最大內(nèi)存不超過(guò)物理內(nèi)存的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
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java對(duì)象強(qiáng)轉(zhuǎn)成object的方法實(shí)現(xiàn)
在 Java 編程中,有時(shí)候我們需要將一個(gè)具體的對(duì)象強(qiáng)制轉(zhuǎn)換成 Object 類(lèi)型,本文主要介紹了java對(duì)象強(qiáng)轉(zhuǎn)成object的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03MyBatis一對(duì)多嵌套查詢(xún)的完整實(shí)例
這篇文章主要給大家介紹了關(guān)于MyBatis一對(duì)多嵌套查詢(xún)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01SpringBoot 如何使用Dataway配置數(shù)據(jù)查詢(xún)接口
這篇文章主要介紹了SpringBoot 如何使用Dataway配置數(shù)據(jù)查詢(xún)接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java Chassis3過(guò)載狀態(tài)下的快速失敗解決分析
本文解密了Java Chassis 3快速失敗相關(guān)的機(jī)制和背后故事,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Java Socket編程實(shí)例(二)- UDP基本使用
這篇文章主要講解Java Socket編程中UDP的基本使用,希望能給大家做一個(gè)參考。2016-06-06SpringBoot集成Flyway進(jìn)行數(shù)據(jù)庫(kù)版本遷移管理的步驟
這篇文章主要介紹了SpringBoot集成Flyway進(jìn)行數(shù)據(jù)庫(kù)版本遷移管理的步驟,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下2021-03-03