Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp @ 941:8b46c4d82093
4957990: Perm heap bloat in JVM
Summary: Treat ProfileData in MDO's as a source of weak, not strong, roots. Fixes the bug for stop-world collection -- the case of concurrent collection will be fixed separately.
Reviewed-by: jcoomes, jmasa, kvn, never
author | ysr |
---|---|
date | Wed, 02 Sep 2009 00:04:29 -0700 |
parents | 81cd571500b0 |
children | 89e0543e1737 54b3b351d6f9 |
comparison
equal
deleted
inserted
replaced
940:8624da129f0b | 941:8b46c4d82093 |
---|---|
56 | 56 |
57 NOT_PRODUCT(TraceTime tm("MarkFromRootsTask", | 57 NOT_PRODUCT(TraceTime tm("MarkFromRootsTask", |
58 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); | 58 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); |
59 ParCompactionManager* cm = | 59 ParCompactionManager* cm = |
60 ParCompactionManager::gc_thread_compaction_manager(which); | 60 ParCompactionManager::gc_thread_compaction_manager(which); |
61 // cm->allocate_stacks(); | |
62 assert(cm->stacks_have_been_allocated(), | 61 assert(cm->stacks_have_been_allocated(), |
63 "Stack space has not been allocated"); | 62 "Stack space has not been allocated"); |
64 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); | 63 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); |
65 | 64 |
66 switch (_root_type) { | 65 switch (_root_type) { |
67 case universe: | 66 case universe: |
68 Universe::oops_do(&mark_and_push_closure); | 67 Universe::oops_do(&mark_and_push_closure); |
127 | 126 |
128 NOT_PRODUCT(TraceTime tm("RefProcTask", | 127 NOT_PRODUCT(TraceTime tm("RefProcTask", |
129 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); | 128 PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty)); |
130 ParCompactionManager* cm = | 129 ParCompactionManager* cm = |
131 ParCompactionManager::gc_thread_compaction_manager(which); | 130 ParCompactionManager::gc_thread_compaction_manager(which); |
132 // cm->allocate_stacks(); | |
133 assert(cm->stacks_have_been_allocated(), | 131 assert(cm->stacks_have_been_allocated(), |
134 "Stack space has not been allocated"); | 132 "Stack space has not been allocated"); |
135 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); | 133 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); |
136 PSParallelCompact::FollowStackClosure follow_stack_closure(cm); | 134 PSParallelCompact::FollowStackClosure follow_stack_closure(cm); |
137 _rp_task.work(_work_id, *PSParallelCompact::is_alive_closure(), | 135 _rp_task.work(_work_id, *PSParallelCompact::is_alive_closure(), |
138 mark_and_push_closure, follow_stack_closure); | 136 mark_and_push_closure, follow_stack_closure); |
139 } | 137 } |