157 _preserved_count = 0; |
157 _preserved_count = 0; |
158 _preserved_mark_stack = NULL; |
158 _preserved_mark_stack = NULL; |
159 _preserved_oop_stack = NULL; |
159 _preserved_oop_stack = NULL; |
160 |
160 |
161 _marking_stack = new (ResourceObj::C_HEAP) GrowableArray<oop>(4000, true); |
161 _marking_stack = new (ResourceObj::C_HEAP) GrowableArray<oop>(4000, true); |
|
162 _objarray_stack = new (ResourceObj::C_HEAP) GrowableArray<ObjArrayTask>(50, true); |
162 |
163 |
163 int size = SystemDictionary::number_of_classes() * 2; |
164 int size = SystemDictionary::number_of_classes() * 2; |
164 _revisit_klass_stack = new (ResourceObj::C_HEAP) GrowableArray<Klass*>(size, true); |
165 _revisit_klass_stack = new (ResourceObj::C_HEAP) GrowableArray<Klass*>(size, true); |
165 // (#klass/k)^2 for k ~ 10 appears to be a better fit, but this will have to do for |
166 // (#klass/k)^2 for k ~ 10 appears to be a better fit, but this will have to do for |
166 // now until we have had a chance to investigate a more optimal setting. |
167 // now until we have had a chance to investigate a more optimal setting. |
206 delete _preserved_oop_stack; |
206 delete _preserved_oop_stack; |
207 _preserved_oop_stack = NULL; |
207 _preserved_oop_stack = NULL; |
208 } |
208 } |
209 |
209 |
210 delete _marking_stack; |
210 delete _marking_stack; |
|
211 delete _objarray_stack; |
211 delete _revisit_klass_stack; |
212 delete _revisit_klass_stack; |
212 delete _revisit_mdo_stack; |
213 delete _revisit_mdo_stack; |
213 |
214 |
214 #ifdef VALIDATE_MARK_SWEEP |
215 #ifdef VALIDATE_MARK_SWEEP |
215 if (ValidateMarkSweep) { |
216 if (ValidateMarkSweep) { |