tag:blogger.com,1999:blog-5171098727364395242.post4607262463666939056..comments2023-05-14T13:23:31.669+01:00Comments on Psychosomatic, Lobotomy, Saw: The JVM Write Barrier - Card MarkingNitsanhttp://www.blogger.com/profile/10496299147100350513noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-5171098727364395242.post-67123137488444575792016-01-08T21:52:39.481+00:002016-01-08T21:52:39.481+00:00I see I was thinking in exactly the opposite direc...I see I was thinking in exactly the opposite direction. Thank you, now it's pretty clear.maaartinushttps://www.blogger.com/profile/00411808646708588421noreply@blogger.comtag:blogger.com,1999:blog-5171098727364395242.post-25077375216713229452016-01-06T15:51:00.055+00:002016-01-06T15:51:00.055+00:00+1. Objects that are a part of the snapshot (and r...+1. Objects that are a part of the snapshot (and reachable) could get overwritten before they get traced. Hence SATB guarantee requires the mutator to log the previous value of the pointer in a log buffer. This needs to be done before the write hence it's called a pre-write barrier. The log buffers are processed at regular intervals.Monica Beckwithhttps://www.blogger.com/profile/05883769168322805141noreply@blogger.comtag:blogger.com,1999:blog-5171098727364395242.post-29414172579520070122016-01-06T12:31:56.287+00:002016-01-06T12:31:56.287+00:00For a tall person you sure know allot about GC...For a tall person you sure know allot about GC...Nitsanhttps://www.blogger.com/profile/10496299147100350513noreply@blogger.comtag:blogger.com,1999:blog-5171098727364395242.post-4738210606543999212016-01-06T11:21:59.471+00:002016-01-06T11:21:59.471+00:00That's because the concurrent marking in G1 is...That's because the concurrent marking in G1 is snapshot-at-the-beginning. It marks the objects which were live *at the beginning* of the marking cycle. So, if mutators overwrite a field, the previous value is stored for concurrent marking. No need to store nulls, though.<br /><br />See section 2.5.3 of the original G1 paper by Detlefs, Flood, Heller, Printezis for details.gvsmirnovhttps://www.blogger.com/profile/09213176675225121755noreply@blogger.comtag:blogger.com,1999:blog-5171098727364395242.post-50687855008138523452016-01-06T08:46:32.927+00:002016-01-06T08:46:32.927+00:00I am probably not the best person to ask... I'...I am probably not the best person to ask... I'll see if I can get a G1GC person to comment here.Nitsanhttps://www.blogger.com/profile/10496299147100350513noreply@blogger.comtag:blogger.com,1999:blog-5171098727364395242.post-17305394141081261002015-12-31T17:53:46.203+00:002015-12-31T17:53:46.203+00:00Good stuff, indeed. Could you explain, why g1_wb_p...Good stuff, indeed. Could you explain, why g1_wb_pre is needed? It handles the case when a reference disappears, which doesn't seem important enough as treating a single object which recently became unreachable as reachable is just a small overhead when compared to such a test done on many reference stores.maaartinushttps://www.blogger.com/profile/00411808646708588421noreply@blogger.comtag:blogger.com,1999:blog-5171098727364395242.post-51451808549249504762014-10-29T11:15:04.855+00:002014-10-29T11:15:04.855+00:00Thanks :)
Added note at relevant paragraph, you ar...Thanks :)<br />Added note at relevant paragraph, you are now earmarked to review next post ;-)Nitsanhttps://www.blogger.com/profile/10496299147100350513noreply@blogger.comtag:blogger.com,1999:blog-5171098727364395242.post-40197132721872087382014-10-29T10:26:56.624+00:002014-10-29T10:26:56.624+00:00Hi Nitsan,
Good stuff as always. And even better w...Hi Nitsan,<br />Good stuff as always. And even better when using Intel syntax for assembly ! :)<br /><br />However just a quick remark about the 9 bit shift. I would explain why there is this shift, and relation with size of the card (512 bytes 2^9). But maybe you assume the reader should have read all referenced articles before... :)Jean-Philippe Bempelhttps://www.blogger.com/profile/06767056355047105540noreply@blogger.com