日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
jvm內(nèi)存模型及分配參數(shù)-創(chuàng)新互聯(lián)

jvm內(nèi)存模型

成都創(chuàng)新互聯(lián)是一家專業(yè)提供通山企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為通山眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進行中。
  1. 程序計數(shù)器:是一塊很小的內(nèi)存空間。當(dāng)線程數(shù)量超過cpu數(shù)量時,線程之間根據(jù)時間片輪詢搶奪cpu資源。每一個線程都必須用一個獨立的程序計數(shù)器,用于記錄下一條要運行的指令。

  2. java虛擬機棧(線程棧 ):也是線程私有內(nèi)存空間,他和java線程在同一時間創(chuàng)建,他保存方法的局部變量、部分結(jié)果,并參與方法的調(diào)用和返回。如果線程在計算過程中,請求的棧深度大于大可用的棧深度,則拋出StackOverflowError;如果java??梢詣討B(tài)擴展,而在擴展的過程中,操作系統(tǒng)沒有足夠的內(nèi)存空間來支持棧的擴展,則拋出OutOfMemoryError;——參數(shù)設(shè)置參見《設(shè)置線程棧 》

  3. 本地方法棧:用于管理本地方法的調(diào)用,本地方法是使用C實現(xiàn)的。

  4. java堆:堆空間分為新生代和老年代。新生代用于存放產(chǎn)生的新對象,老年代用于存放年長的對象(存在 時間較長,經(jīng)過垃圾回收次數(shù)較多的對象)。新生代又可以細(xì)分為eden,s0和s1,eden大部分對象剛建立時,通常放在這里。s0和s1為survivor空間,也就是說存放其中的對象至少經(jīng)歷了一次垃圾回收,并得以幸存。如果幸存區(qū)的對象到了指定的年齡仍未被回收,則有機會進入老年代。

  5. 方法區(qū):與堆空間類似,也是被jvm的所有線程共享的,主要保存的是類的類型信息、常量池、域信息、方法信息等元數(shù)據(jù)。

jvm內(nèi)存模型及分配參數(shù)

jvm內(nèi)存模型及分配參數(shù)

設(shè)置大、最小堆內(nèi)存

  1. 用-Xmx指定大堆內(nèi)存,大堆內(nèi)存指的是新生代和老年代的大小之和的大值,它是java應(yīng)用程序的堆上線。

  2. 用-Xms指定最小堆內(nèi)存,也就是jvm啟動時,所占據(jù)的操作系統(tǒng)內(nèi)存大小。

  3. 當(dāng)-Xms指定的內(nèi)存大小確實無法滿足應(yīng)用程序是,jvm才會向操作系統(tǒng)申請更多的內(nèi)存,直至達(dá)到-Xmx指定的內(nèi)存大小為止。 如果-Xms的數(shù)值較小,那么jvm為了保證系統(tǒng)盡可能的在指定內(nèi)存范圍內(nèi)運行,就會頻繁的進行g(shù)c操作,以釋放失效的內(nèi)存空間,從而,會增加Minor GC和Full GC的次數(shù),對系統(tǒng)性能產(chǎn)生一定影響。所以,把-Xms值設(shè)置為-Xmx時,可以在系統(tǒng)運行初期減少gc的次數(shù)和耗時。

設(shè)置線程棧

  1. 線程棧是線程的一塊私有空間,可以用-Xss設(shè)置線程棧的大小,棧的大小直接決定了函數(shù)調(diào)用的可達(dá)深度。

  2. 在線程中進行局部變量分配,函數(shù)調(diào)用時,都需要在棧中開辟空間。

  3. 如果棧的空間分配太小,那么線程在運行時,可能沒有足夠的空間分配局部變量或者達(dá)不到足夠的函數(shù)調(diào)用深度,導(dǎo)致程序異常退出;如果棧空間過大,那么開設(shè)線程所需的內(nèi)存成本就會上升,系統(tǒng)所能支持的線程總數(shù)就會下降。

  4. java堆和線程棧都是像操作系統(tǒng)申請內(nèi)存空間,如果堆空間過大,就會導(dǎo)致操作系統(tǒng)可用于線程棧的內(nèi)存減小,當(dāng)系統(tǒng)由于內(nèi)存不夠而無法創(chuàng)建新的線程時,會拋出OOM異常(注意這個OOM不是堆內(nèi)存不足)。所以,如果系統(tǒng)確實需要大量線程并發(fā)執(zhí)行,那么設(shè)置一個較小的堆和較小的棧,有助于提高系統(tǒng)所能承受的大線程數(shù)。

設(shè)置新生代

  1. 用-Xmn指定新生代的大小,新生代的大小一般設(shè)置為整個堆空間的1/4到1/3。設(shè)置一個較大或較小的新生代對系統(tǒng)性能已經(jīng)gc行為有很大影響。

  2. 使用-XX:NewSize設(shè)置新生代的初始大小,-XX:MaxNewSize設(shè)置新生代的大值。通常情況下只設(shè)置-Xmn即可滿足需要。

設(shè)置持久代

  1. 持久代(方法區(qū))不屬于堆得一部分,使用-XX:MaxPermSize設(shè)置持久代大值,使用-XX:PermSize設(shè)置持久代最小值。

  2. 持久代的大小直接決定了系統(tǒng)可以支持多少個類定義和多少常量。

  3. 一般MaxPermSize設(shè)置為64M或128M。

取得堆快照(堆dump)

使用-XX:+HeapDumpOnOutOfMemoryError參數(shù)在程序發(fā)生OOM時,導(dǎo)出應(yīng)用程序的當(dāng)前堆快照。

通過參數(shù)-XX:HeapDumpPath可以指定堆快照的保存位置。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文名稱:jvm內(nèi)存模型及分配參數(shù)-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://www.dlmjj.cn/article/doisgj.html