伊谢尔伦2017-04-18 10:00:39
個人感覺S0和S1的存在是為了提高性能。
survivor space的使用:
在任何時候,總有一個survivor space是empty的,在下一次coping collection時,會將eden和另一個survivor space裡的live object copy到這個裡面。
live objects在兩個survivor space裡copy來copy去,直到物件old enough可以放到tenured generation裡(copy 過去的)
因為在垃圾收集的時候需要將dead object清理掉,如果只有一個survivor區,那麼這個survivor區裡的dead object在清理掉之後就會產生內存碎片,為了避免內存碎片那麼必須將live object移動來移動去,這樣就會損失性能。
如果有兩個survivor區,依照上面的說法,就不會有記憶體碎片的問題。
SO的答案在這裡:http://stackoverflow.com/ques...