OSDN Git Service

Always mark zygote large objects for CC
authorMathieu Chartier <mathieuc@google.com>
Tue, 16 Aug 2016 19:15:59 +0000 (12:15 -0700)
committerMathieu Chartier <mathieuc@google.com>
Wed, 17 Aug 2016 01:45:34 +0000 (18:45 -0700)
commit962cd7adf3d9d2a1dedf0318056a29e9390f1c38
tree1f646b59d9c9beaba889342c2e416bd046b2f670
parent36bf3a2d281892e7906d3eaf9d7455b0656c9a25
Always mark zygote large objects for CC

Prevent needing to gray holders of zygote large objects.
System wide zygote space PSS after boot:
12644 kB -> 5571 kB for CC.

Also PSS reduction in zygote large objects themselves since their
gray bit would have been set each GC.
Overall LOS savings hard to measure, could be up to 316 * 4KB per
app since there are 316 zygote large objects.

Also clear mod-union tables for image spaces to prevent dirty
image pages if any of the image spaces point to zygote large objects.
System wide .art mmap: 37432 kB -> 34372 kB

System server before (N6P):
LOS shared dirty: 12888 kB
Zygote space shared dirty: 700 kB
Zygote space private dirty: 868 kB
.art private dirty: 1696 kB

After:
LOS shared dirty 13672 kB
Zygote space shared dirty: 1072 kB
Zygote space private dirty: 496 kB
.art private dirty: 1432 kB

Bug: 29516968

Test: test-art-host with baker CC, debug N6P phone booting

Change-Id: Ia37ce2c11217cf56885bd1d1dc084332fcbb7843
runtime/gc/accounting/mod_union_table.cc
runtime/gc/accounting/mod_union_table.h
runtime/gc/collector/concurrent_copying.cc
runtime/gc/collector/concurrent_copying.h
runtime/gc/heap.cc