comparison src/share/vm/gc_implementation/g1/g1MarkSweep.cpp @ 1311:2a1472c30599

4396719: Mark Sweep stack overflow on deeply nested Object arrays Summary: Use an explicit stack for object arrays and process them in chunks. Reviewed-by: iveresov, apetrusenko
author jcoomes
date Wed, 03 Mar 2010 14:48:26 -0800
parents 54b3b351d6f9
children 0bfd3fb24150
comparison
equal deleted inserted replaced
1289:d47555d7aca8 1311:2a1472c30599
99 GenMarkSweep::_preserved_mark_stack = NULL; 99 GenMarkSweep::_preserved_mark_stack = NULL;
100 GenMarkSweep::_preserved_oop_stack = NULL; 100 GenMarkSweep::_preserved_oop_stack = NULL;
101 101
102 GenMarkSweep::_marking_stack = 102 GenMarkSweep::_marking_stack =
103 new (ResourceObj::C_HEAP) GrowableArray<oop>(4000, true); 103 new (ResourceObj::C_HEAP) GrowableArray<oop>(4000, true);
104 GenMarkSweep::_objarray_stack =
105 new (ResourceObj::C_HEAP) GrowableArray<ObjArrayTask>(50, true);
104 106
105 int size = SystemDictionary::number_of_classes() * 2; 107 int size = SystemDictionary::number_of_classes() * 2;
106 GenMarkSweep::_revisit_klass_stack = 108 GenMarkSweep::_revisit_klass_stack =
107 new (ResourceObj::C_HEAP) GrowableArray<Klass*>(size, true); 109 new (ResourceObj::C_HEAP) GrowableArray<Klass*>(size, true);
108 // (#klass/k)^2 for k ~ 10 appears a better fit, but this will have to do 110 // (#klass/k)^2 for k ~ 10 appears a better fit, but this will have to do