comparison src/share/vm/memory/genMarkSweep.cpp @ 4872:aa3d708d67c4

7141200: log some interesting information in ring buffers for crashes Reviewed-by: kvn, jrose, kevinw, brutisso, twisti, jmasa
author never
date Wed, 01 Feb 2012 07:59:01 -0800
parents f08d439fab8c
children d903bf750e9f
comparison
equal deleted inserted replaced
4871:f067b4e0e04b 4872:aa3d708d67c4
1 /* 1 /*
2 * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
252 } 252 }
253 253
254 void GenMarkSweep::mark_sweep_phase1(int level, 254 void GenMarkSweep::mark_sweep_phase1(int level,
255 bool clear_all_softrefs) { 255 bool clear_all_softrefs) {
256 // Recursively traverse all live objects and mark them 256 // Recursively traverse all live objects and mark them
257 EventMark m("1 mark object");
258 TraceTime tm("phase 1", PrintGC && Verbose, true, gclog_or_tty); 257 TraceTime tm("phase 1", PrintGC && Verbose, true, gclog_or_tty);
259 trace(" 1"); 258 trace(" 1");
260 259
261 VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false)); 260 VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false));
262 261
323 // tracking expects us to do so. See comment under phase4. 322 // tracking expects us to do so. See comment under phase4.
324 323
325 GenCollectedHeap* gch = GenCollectedHeap::heap(); 324 GenCollectedHeap* gch = GenCollectedHeap::heap();
326 Generation* pg = gch->perm_gen(); 325 Generation* pg = gch->perm_gen();
327 326
328 EventMark m("2 compute new addresses");
329 TraceTime tm("phase 2", PrintGC && Verbose, true, gclog_or_tty); 327 TraceTime tm("phase 2", PrintGC && Verbose, true, gclog_or_tty);
330 trace("2"); 328 trace("2");
331 329
332 VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false)); 330 VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false));
333 331
348 void GenMarkSweep::mark_sweep_phase3(int level) { 346 void GenMarkSweep::mark_sweep_phase3(int level) {
349 GenCollectedHeap* gch = GenCollectedHeap::heap(); 347 GenCollectedHeap* gch = GenCollectedHeap::heap();
350 Generation* pg = gch->perm_gen(); 348 Generation* pg = gch->perm_gen();
351 349
352 // Adjust the pointers to reflect the new locations 350 // Adjust the pointers to reflect the new locations
353 EventMark m("3 adjust pointers");
354 TraceTime tm("phase 3", PrintGC && Verbose, true, gclog_or_tty); 351 TraceTime tm("phase 3", PrintGC && Verbose, true, gclog_or_tty);
355 trace("3"); 352 trace("3");
356 353
357 VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false)); 354 VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(false));
358 355
409 // here (perm_gen first rather than last), so we tell the validate code 406 // here (perm_gen first rather than last), so we tell the validate code
410 // to use a higher index (saved from phase2) when verifying perm_gen. 407 // to use a higher index (saved from phase2) when verifying perm_gen.
411 GenCollectedHeap* gch = GenCollectedHeap::heap(); 408 GenCollectedHeap* gch = GenCollectedHeap::heap();
412 Generation* pg = gch->perm_gen(); 409 Generation* pg = gch->perm_gen();
413 410
414 EventMark m("4 compact heap");
415 TraceTime tm("phase 4", PrintGC && Verbose, true, gclog_or_tty); 411 TraceTime tm("phase 4", PrintGC && Verbose, true, gclog_or_tty);
416 trace("4"); 412 trace("4");
417 413
418 VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(true)); 414 VALIDATE_MARK_SWEEP_ONLY(reset_live_oop_tracking(true));
419 415