深入了解java內(nèi)存分配和回收策略-創(chuàng)新互聯(lián)

一、導(dǎo)論

創(chuàng)新互聯(lián)建站長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為巴彥淖爾企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站制作,巴彥淖爾網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

java技術(shù)體系中所提到的內(nèi)存自動(dòng)化管理歸根結(jié)底就是內(nèi)存的分配與回收兩個(gè)問(wèn)題,之前已經(jīng)和大家談過(guò)java回收的相關(guān)知識(shí),今天來(lái)和大家聊聊java對(duì)象的在內(nèi)存中的分配。通俗的講,對(duì)象的內(nèi)存分配就是在堆上的分配,對(duì)象主要分配在新生代的Eden上(關(guān)于對(duì)象在內(nèi)存上的分代在垃圾回收中會(huì)補(bǔ)上,想了解的也可以參考《深入理解java虛擬機(jī)》),如果啟動(dòng)了本地線程分配緩沖,講按線程優(yōu)先在TLAB上分配。少數(shù)情況下也是直接在老年代中分配。

二、經(jīng)典的分配策略

1、對(duì)象優(yōu)先在Eden上分配

一般情況下對(duì)象都是優(yōu)先分配在Eden上,當(dāng)Eden沒(méi)有足夠的空間進(jìn)行分配時(shí),jvm會(huì)發(fā)起一次Minor GC。如果還是沒(méi)有足夠的空間分配,后面還有另外的措施,下面會(huì)提到。

設(shè)置虛擬機(jī)的偶記日志參數(shù)-XX:+PrintGCDetails,在垃圾回收的時(shí)候會(huì)打印內(nèi)存的回收日志,并且在進(jìn)程退出的時(shí)候會(huì)輸出當(dāng)前內(nèi)存各區(qū)域的分配情況。下面來(lái)看下具體的例子,首先需要設(shè)置jvm的參數(shù)-Xms20m -Xmx20m -Xmn10m,這三個(gè)參數(shù)說(shuō)明java堆大小為20M,且不可擴(kuò)展,其中10M分配給新生代,剩下的10M分配給老年代。-XX:SurvivorRatio=8是jvm默認(rèn)的新生代中Eden和Survivor比例,默認(rèn)為8:1。原因是新生代中的對(duì)象98%都會(huì)在下一次GC的時(shí)候回收掉,所以很適合采用復(fù)制算法進(jìn)行垃圾回收,所以新生代10M的內(nèi)存中,8M是Eden,1M是Survivor,另外的1M是未使用配合復(fù)制算法的內(nèi)存塊,也是Survivor。

public class ReflectTest {

  private static final int _1MB = 1024*1024;
  
  public static void testAllocation(){
    byte[] allocation1 , allocation2 , allocation3 , allocation4;
    allocation1 = new byte[2 * _1MB];
    allocation2 = new byte[2 * _1MB];
    allocation3 = new byte[2 * _1MB];
    allocation4 = new byte[6 * _1MB];
  }
  
  public static void main(String[] args) {
    ReflectTest.testAllocation();
  }
  
}

分享題目:深入了解java內(nèi)存分配和回收策略-創(chuàng)新互聯(lián)
文章URL:http://muchs.cn/article2/ceccoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃關(guān)鍵詞優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、電子商務(wù)、企業(yè)網(wǎng)站制作、App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)