I'm not a GC specialist, but your approach looks reasonable to me.

parallelScavengeHeap.cpp:

"less that 1 workers" -> "less that 1 worker"

psOldGen.cpp:

">=2" -> ">= 2"

"thread_num-2 worker" -> "(thread_num -2) workers"

"cross blocks" -> "crosses blocks"

"that the object start address locates in the related block" -> "that owns the 
block within which the object starts"

blocks_iterate_parallel() relies on BLOCK_SIZE being an integral multiple of a 
start_array() block (i.e., ObjectStartArray:: block_size). I'd add an assert to 
that effect.

The comment on the definition of BLOCK_SIZE is "64 KB", but you're doing 
pointer arithmetic in terms of HeapWords, which means the actual byte value is 
either 256KB or 512KB for 32- and 64-bit respectively. You could use

const int BLOCK_SIZE = (64 * 1024 / HeapWordSize);

"// There is objects" -> "There are objects"

"reture" -> "return"

", here only focus objects" -> ". Here only focus on objects"

It's a matter of taste, but imo the loop in blocks_iterate_parallel() would be 
more clear as

for (HeapWord* p = start; p < end; p += oop(p)->size()) {
    cl->do_object(oop(p));
}

psOldGen.hpp:

blocks_iterate_parallel() is pure implementation and I don't see a reference 
outside psOldGen.cpp. So, it should be private, not public.

psYoungGen.cpp:

"<=1" -> "<= 1"

Thanks,
Paul

On 9/11/20, 12:29 AM, "hotspot-gc-dev on behalf of Lin Zang" 
<hotspot-gc-dev-r...@openjdk.java.net on behalf of lz...@openjdk.java.net> 
wrote:

    On Sun, 6 Sep 2020 01:13:48 GMT, Lin Zang <lz...@openjdk.org> wrote:

    > - Parallel heap iteration support for PSS
    > - JBS:  https://bugs.openjdk.java.net/browse/JDK-8252103

    Dear All,
      May I ask your help to review this PR? Thanks!
    -Lin

    -------------

    PR: https://git.openjdk.java.net/jdk/pull/25

Reply via email to