Fix criteria to decide should next GC be minor

A GC throughput (in terms of freed-bytes per second) comparison between
minor GCs and full GCs is used to decide whether the next GC should be
minor or full. To take care of the corner case wherein minor GC's
throughput never falls below that of full GC's, a cap is put on
bytes_allocated to not go over target_footprint. This cap,
in case of concurrent GCs, should be at concurrent_start_bytes as that
is when a GC cycle is triggered.

Test: art/test/testrunner/testrunner.py --target
Test: Golem benchmarks to confirm performance isn't affected
Bug: 123662955
Change-Id: I94afd04f3fcac86d6f9cec6a1af407c5be599b26
1 file changed