每天一道面試題 虛擬機器如何給物件分配記憶體?

2021-09-10 11:21:41 字數 548 閱讀 2801

當建立乙個物件時,需要給新生物件分配記憶體,而分配記憶體就是在堆上進行分配。在堆上進行分配的時候,可能在新生代的eden區上,也可能在老年代中分配,具體的分配策略需要參考一些記憶體分配的規則。

大多數情況下,新生物件都在新生代的eden區進行記憶體分配,當新生代eden區沒足夠空間的時候,會觸發一次minor gc。

當乙個新生物件需要大量連續空間並且物件所需空間大於-xx:pretenuresizethreshold引數值的時候,這個物件將在老年代分配記憶體空間,這樣可以避免新生代發生大量的記憶體複製。

在新生代每經過一次minor gc,存活物件的年齡都會增加一歲,當年齡超過-xx:maxtenuringthreshold引數值的時候,這個物件將進入老年代。

如果新生代survivor空間中相同年齡所有物件大小的總和大於survivor空間的一半,年齡等於或超過該年齡的物件將直接進入老年代,不再等待年齡超過-xx:maxtenuringthreshold引數值的條件進入老年代。

每天一道面試題 開篇

先說一下自己寫 每天一道面試題 原因。雖然現在所在的公司對我還是比較重視,但是現在公司的現狀是取消了加班費,加班沒有調休 不論工作日還是週末還是法定節假日 本著能者多勞以及 培養新人 的觀念,我是專案組裡面加班最多的人之一,幾乎每天加班到十一二點,週六才能夠在晚上7點前下班。這種狀態持續了四五個月。...

每天一道面試題(1)

2011年 阿里巴巴 筆試題集 第23題 乙個骰子,6面,1個面是 1,2個面是2,3個面是3,問平均擲多少次能使1 2 3都至少出現一次.這題可以翻譯為,乙個骰子,6面,1個面是 1,2個面是2,3個面是3,隨機扔骰子,在第x次時3個數都出現,求這個x的期望 也就是扔無數次,x的平均值是多少 思路...

每天一道面試題 JAVA部分

1 抽象 抽象就是忽略乙個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是資料抽象。2 繼承 繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方...