501 mgr->gc_end(recordPostGCUsage, recordAccumulatedGCTime, recordGCEndTime, 502 countCollection, cause); 503 } 504 505 void MemoryService::oops_do(OopClosure* f) { 506 int i; 507 508 for (i = 0; i < _pools_list->length(); i++) { 509 MemoryPool* pool = _pools_list->at(i); 510 pool->oops_do(f); 511 } 512 for (i = 0; i < _managers_list->length(); i++) { 513 MemoryManager* mgr = _managers_list->at(i); 514 mgr->oops_do(f); 515 } 516 } 517 518 bool MemoryService::set_verbose(bool verbose) { 519 MutexLocker m(Management_lock); 520 // verbose will be set to the previous value 521 bool succeed = CommandLineFlags::boolAtPut((char*)"PrintGC", &verbose, Flag::MANAGEMENT); 522 assert(succeed, "Setting PrintGC flag fails"); 523 ClassLoadingService::reset_trace_class_unloading(); 524 525 return verbose; 526 } 527 528 Handle MemoryService::create_MemoryUsage_obj(MemoryUsage usage, TRAPS) { 529 Klass* k = Management::java_lang_management_MemoryUsage_klass(CHECK_NH); 530 instanceKlassHandle ik(THREAD, k); 531 532 instanceHandle obj = ik->allocate_instance_handle(CHECK_NH); 533 534 JavaValue result(T_VOID); 535 JavaCallArguments args(10); 536 args.push_oop(obj); // receiver 537 args.push_long(usage.init_size_as_jlong()); // Argument 1 538 args.push_long(usage.used_as_jlong()); // Argument 2 539 args.push_long(usage.committed_as_jlong()); // Argument 3 540 args.push_long(usage.max_size_as_jlong()); // Argument 4 541 542 JavaCalls::call_special(&result, | 501 mgr->gc_end(recordPostGCUsage, recordAccumulatedGCTime, recordGCEndTime, 502 countCollection, cause); 503 } 504 505 void MemoryService::oops_do(OopClosure* f) { 506 int i; 507 508 for (i = 0; i < _pools_list->length(); i++) { 509 MemoryPool* pool = _pools_list->at(i); 510 pool->oops_do(f); 511 } 512 for (i = 0; i < _managers_list->length(); i++) { 513 MemoryManager* mgr = _managers_list->at(i); 514 mgr->oops_do(f); 515 } 516 } 517 518 bool MemoryService::set_verbose(bool verbose) { 519 MutexLocker m(Management_lock); 520 // verbose will be set to the previous value 521 Flag::Error error = CommandLineFlags::boolAtPut("PrintGC", &verbose, Flag::MANAGEMENT); 522 assert(error==Flag::SUCCESS, err_msg("Setting PrintGC flag failed with error %s", Flag::flag_error_str(error))); 523 ClassLoadingService::reset_trace_class_unloading(); 524 525 return verbose; 526 } 527 528 Handle MemoryService::create_MemoryUsage_obj(MemoryUsage usage, TRAPS) { 529 Klass* k = Management::java_lang_management_MemoryUsage_klass(CHECK_NH); 530 instanceKlassHandle ik(THREAD, k); 531 532 instanceHandle obj = ik->allocate_instance_handle(CHECK_NH); 533 534 JavaValue result(T_VOID); 535 JavaCallArguments args(10); 536 args.push_oop(obj); // receiver 537 args.push_long(usage.init_size_as_jlong()); // Argument 1 538 args.push_long(usage.used_as_jlong()); // Argument 2 539 args.push_long(usage.committed_as_jlong()); // Argument 3 540 args.push_long(usage.max_size_as_jlong()); // Argument 4 541 542 JavaCalls::call_special(&result, |