按理说应该是1024+512=1536才对,现在是2097152/1024(2048)
是我理解错了?
👍,我当时记错了,刚看了下代码,是还要512*一个page_size,也就是4096
enum SomePublicConstants { card_shift = 9, card_size = 1 << card_shift, card_size_in_words = card_size / sizeof(HeapWord) }; uintx CardTableModRefBS::ct_max_alignment_constraint() { return card_size * os::vm_page_size(); } 复制
enum SomePublicConstants { card_shift = 9, card_size = 1 << card_shift, card_size_in_words = card_size / sizeof(HeapWord) }; uintx CardTableModRefBS::ct_max_alignment_constraint() { return card_size * os::vm_page_size(); }
会按照ct_max_alignment_constraint的返回值对齐,其中card_size是512,os::vm_page_size()是4096,也就是2M对齐
多谢大神指点,那就是可以理解为2M的最小公倍数
👍,我当时记错了,刚看了下代码,是还要512*一个page_size,也就是4096
enum SomePublicConstants { card_shift = 9, card_size = 1 << card_shift, card_size_in_words = card_size / sizeof(HeapWord) }; uintx CardTableModRefBS::ct_max_alignment_constraint() { return card_size * os::vm_page_size(); }
会按照ct_max_alignment_constraint的返回值对齐,其中card_size是512,os::vm_page_size()是4096,也就是2M对齐