comparison src/share/vm/memory/metaspace.cpp @ 17866:270d7cb38f40

8038934: Remove prefix allocated_ from methods and variables in Metaspace Reviewed-by: jmasa, coleenp
author ehelin
date Mon, 31 Mar 2014 17:09:38 +0200
parents 9fdaa79b0c27
children 7384f6a12fc1
comparison
equal deleted inserted replaced
17865:fa21c9537e6e 17866:270d7cb38f40
1445 void MetaspaceGC::compute_new_size() { 1445 void MetaspaceGC::compute_new_size() {
1446 assert(_shrink_factor <= 100, "invalid shrink factor"); 1446 assert(_shrink_factor <= 100, "invalid shrink factor");
1447 uint current_shrink_factor = _shrink_factor; 1447 uint current_shrink_factor = _shrink_factor;
1448 _shrink_factor = 0; 1448 _shrink_factor = 0;
1449 1449
1450 const size_t used_after_gc = MetaspaceAux::allocated_capacity_bytes(); 1450 const size_t used_after_gc = MetaspaceAux::capacity_bytes();
1451 const size_t capacity_until_GC = MetaspaceGC::capacity_until_GC(); 1451 const size_t capacity_until_GC = MetaspaceGC::capacity_until_GC();
1452 1452
1453 const double minimum_free_percentage = MinMetaspaceFreeRatio / 100.0; 1453 const double minimum_free_percentage = MinMetaspaceFreeRatio / 100.0;
1454 const double maximum_used_percentage = 1.0 - minimum_free_percentage; 1454 const double maximum_used_percentage = 1.0 - minimum_free_percentage;
1455 1455
2535 #endif // PRODUCT 2535 #endif // PRODUCT
2536 2536
2537 // MetaspaceAux 2537 // MetaspaceAux
2538 2538
2539 2539
2540 size_t MetaspaceAux::_allocated_capacity_words[] = {0, 0}; 2540 size_t MetaspaceAux::_capacity_words[] = {0, 0};
2541 size_t MetaspaceAux::_allocated_used_words[] = {0, 0}; 2541 size_t MetaspaceAux::_used_words[] = {0, 0};
2542 2542
2543 size_t MetaspaceAux::free_bytes(Metaspace::MetadataType mdtype) { 2543 size_t MetaspaceAux::free_bytes(Metaspace::MetadataType mdtype) {
2544 VirtualSpaceList* list = Metaspace::get_space_list(mdtype); 2544 VirtualSpaceList* list = Metaspace::get_space_list(mdtype);
2545 return list == NULL ? 0 : list->free_bytes(); 2545 return list == NULL ? 0 : list->free_bytes();
2546 } 2546 }
2549 return free_bytes(Metaspace::ClassType) + free_bytes(Metaspace::NonClassType); 2549 return free_bytes(Metaspace::ClassType) + free_bytes(Metaspace::NonClassType);
2550 } 2550 }
2551 2551
2552 void MetaspaceAux::dec_capacity(Metaspace::MetadataType mdtype, size_t words) { 2552 void MetaspaceAux::dec_capacity(Metaspace::MetadataType mdtype, size_t words) {
2553 assert_lock_strong(SpaceManager::expand_lock()); 2553 assert_lock_strong(SpaceManager::expand_lock());
2554 assert(words <= allocated_capacity_words(mdtype), 2554 assert(words <= capacity_words(mdtype),
2555 err_msg("About to decrement below 0: words " SIZE_FORMAT 2555 err_msg("About to decrement below 0: words " SIZE_FORMAT
2556 " is greater than _allocated_capacity_words[%u] " SIZE_FORMAT, 2556 " is greater than _capacity_words[%u] " SIZE_FORMAT,
2557 words, mdtype, allocated_capacity_words(mdtype))); 2557 words, mdtype, capacity_words(mdtype)));
2558 _allocated_capacity_words[mdtype] -= words; 2558 _capacity_words[mdtype] -= words;
2559 } 2559 }
2560 2560
2561 void MetaspaceAux::inc_capacity(Metaspace::MetadataType mdtype, size_t words) { 2561 void MetaspaceAux::inc_capacity(Metaspace::MetadataType mdtype, size_t words) {
2562 assert_lock_strong(SpaceManager::expand_lock()); 2562 assert_lock_strong(SpaceManager::expand_lock());
2563 // Needs to be atomic 2563 // Needs to be atomic
2564 _allocated_capacity_words[mdtype] += words; 2564 _capacity_words[mdtype] += words;
2565 } 2565 }
2566 2566
2567 void MetaspaceAux::dec_used(Metaspace::MetadataType mdtype, size_t words) { 2567 void MetaspaceAux::dec_used(Metaspace::MetadataType mdtype, size_t words) {
2568 assert(words <= allocated_used_words(mdtype), 2568 assert(words <= used_words(mdtype),
2569 err_msg("About to decrement below 0: words " SIZE_FORMAT 2569 err_msg("About to decrement below 0: words " SIZE_FORMAT
2570 " is greater than _allocated_used_words[%u] " SIZE_FORMAT, 2570 " is greater than _used_words[%u] " SIZE_FORMAT,
2571 words, mdtype, allocated_used_words(mdtype))); 2571 words, mdtype, used_words(mdtype)));
2572 // For CMS deallocation of the Metaspaces occurs during the 2572 // For CMS deallocation of the Metaspaces occurs during the
2573 // sweep which is a concurrent phase. Protection by the expand_lock() 2573 // sweep which is a concurrent phase. Protection by the expand_lock()
2574 // is not enough since allocation is on a per Metaspace basis 2574 // is not enough since allocation is on a per Metaspace basis
2575 // and protected by the Metaspace lock. 2575 // and protected by the Metaspace lock.
2576 jlong minus_words = (jlong) - (jlong) words; 2576 jlong minus_words = (jlong) - (jlong) words;
2577 Atomic::add_ptr(minus_words, &_allocated_used_words[mdtype]); 2577 Atomic::add_ptr(minus_words, &_used_words[mdtype]);
2578 } 2578 }
2579 2579
2580 void MetaspaceAux::inc_used(Metaspace::MetadataType mdtype, size_t words) { 2580 void MetaspaceAux::inc_used(Metaspace::MetadataType mdtype, size_t words) {
2581 // _allocated_used_words tracks allocations for 2581 // _used_words tracks allocations for
2582 // each piece of metadata. Those allocations are 2582 // each piece of metadata. Those allocations are
2583 // generally done concurrently by different application 2583 // generally done concurrently by different application
2584 // threads so must be done atomically. 2584 // threads so must be done atomically.
2585 Atomic::add_ptr(words, &_allocated_used_words[mdtype]); 2585 Atomic::add_ptr(words, &_used_words[mdtype]);
2586 } 2586 }
2587 2587
2588 size_t MetaspaceAux::used_bytes_slow(Metaspace::MetadataType mdtype) { 2588 size_t MetaspaceAux::used_bytes_slow(Metaspace::MetadataType mdtype) {
2589 size_t used = 0; 2589 size_t used = 0;
2590 ClassLoaderDataGraphMetaspaceIterator iter; 2590 ClassLoaderDataGraphMetaspaceIterator iter;
2627 return capacity * BytesPerWord; 2627 return capacity * BytesPerWord;
2628 } 2628 }
2629 2629
2630 size_t MetaspaceAux::capacity_bytes_slow() { 2630 size_t MetaspaceAux::capacity_bytes_slow() {
2631 #ifdef PRODUCT 2631 #ifdef PRODUCT
2632 // Use allocated_capacity_bytes() in PRODUCT instead of this function. 2632 // Use capacity_bytes() in PRODUCT instead of this function.
2633 guarantee(false, "Should not call capacity_bytes_slow() in the PRODUCT"); 2633 guarantee(false, "Should not call capacity_bytes_slow() in the PRODUCT");
2634 #endif 2634 #endif
2635 size_t class_capacity = capacity_bytes_slow(Metaspace::ClassType); 2635 size_t class_capacity = capacity_bytes_slow(Metaspace::ClassType);
2636 size_t non_class_capacity = capacity_bytes_slow(Metaspace::NonClassType); 2636 size_t non_class_capacity = capacity_bytes_slow(Metaspace::NonClassType);
2637 assert(allocated_capacity_bytes() == class_capacity + non_class_capacity, 2637 assert(capacity_bytes() == class_capacity + non_class_capacity,
2638 err_msg("bad accounting: allocated_capacity_bytes() " SIZE_FORMAT 2638 err_msg("bad accounting: capacity_bytes() " SIZE_FORMAT
2639 " class_capacity + non_class_capacity " SIZE_FORMAT 2639 " class_capacity + non_class_capacity " SIZE_FORMAT
2640 " class_capacity " SIZE_FORMAT " non_class_capacity " SIZE_FORMAT, 2640 " class_capacity " SIZE_FORMAT " non_class_capacity " SIZE_FORMAT,
2641 allocated_capacity_bytes(), class_capacity + non_class_capacity, 2641 capacity_bytes(), class_capacity + non_class_capacity,
2642 class_capacity, non_class_capacity)); 2642 class_capacity, non_class_capacity));
2643 2643
2644 return class_capacity + non_class_capacity; 2644 return class_capacity + non_class_capacity;
2645 } 2645 }
2646 2646
2696 if (PrintGCDetails && Verbose) { 2696 if (PrintGCDetails && Verbose) {
2697 gclog_or_tty->print(" " SIZE_FORMAT 2697 gclog_or_tty->print(" " SIZE_FORMAT
2698 "->" SIZE_FORMAT 2698 "->" SIZE_FORMAT
2699 "(" SIZE_FORMAT ")", 2699 "(" SIZE_FORMAT ")",
2700 prev_metadata_used, 2700 prev_metadata_used,
2701 allocated_used_bytes(), 2701 used_bytes(),
2702 reserved_bytes()); 2702 reserved_bytes());
2703 } else { 2703 } else {
2704 gclog_or_tty->print(" " SIZE_FORMAT "K" 2704 gclog_or_tty->print(" " SIZE_FORMAT "K"
2705 "->" SIZE_FORMAT "K" 2705 "->" SIZE_FORMAT "K"
2706 "(" SIZE_FORMAT "K)", 2706 "(" SIZE_FORMAT "K)",
2707 prev_metadata_used/K, 2707 prev_metadata_used/K,
2708 allocated_used_bytes()/K, 2708 used_bytes()/K,
2709 reserved_bytes()/K); 2709 reserved_bytes()/K);
2710 } 2710 }
2711 2711
2712 gclog_or_tty->print("]"); 2712 gclog_or_tty->print("]");
2713 } 2713 }
2719 out->print_cr(" Metaspace " 2719 out->print_cr(" Metaspace "
2720 "used " SIZE_FORMAT "K, " 2720 "used " SIZE_FORMAT "K, "
2721 "capacity " SIZE_FORMAT "K, " 2721 "capacity " SIZE_FORMAT "K, "
2722 "committed " SIZE_FORMAT "K, " 2722 "committed " SIZE_FORMAT "K, "
2723 "reserved " SIZE_FORMAT "K", 2723 "reserved " SIZE_FORMAT "K",
2724 allocated_used_bytes()/K, 2724 used_bytes()/K,
2725 allocated_capacity_bytes()/K, 2725 capacity_bytes()/K,
2726 committed_bytes()/K, 2726 committed_bytes()/K,
2727 reserved_bytes()/K); 2727 reserved_bytes()/K);
2728 2728
2729 if (Metaspace::using_class_space()) { 2729 if (Metaspace::using_class_space()) {
2730 Metaspace::MetadataType ct = Metaspace::ClassType; 2730 Metaspace::MetadataType ct = Metaspace::ClassType;
2731 out->print_cr(" class space " 2731 out->print_cr(" class space "
2732 "used " SIZE_FORMAT "K, " 2732 "used " SIZE_FORMAT "K, "
2733 "capacity " SIZE_FORMAT "K, " 2733 "capacity " SIZE_FORMAT "K, "
2734 "committed " SIZE_FORMAT "K, " 2734 "committed " SIZE_FORMAT "K, "
2735 "reserved " SIZE_FORMAT "K", 2735 "reserved " SIZE_FORMAT "K",
2736 allocated_used_bytes(ct)/K, 2736 used_bytes(ct)/K,
2737 allocated_capacity_bytes(ct)/K, 2737 capacity_bytes(ct)/K,
2738 committed_bytes(ct)/K, 2738 committed_bytes(ct)/K,
2739 reserved_bytes(ct)/K); 2739 reserved_bytes(ct)/K);
2740 } 2740 }
2741 } 2741 }
2742 2742
2834 } 2834 }
2835 } 2835 }
2836 2836
2837 void MetaspaceAux::verify_capacity() { 2837 void MetaspaceAux::verify_capacity() {
2838 #ifdef ASSERT 2838 #ifdef ASSERT
2839 size_t running_sum_capacity_bytes = allocated_capacity_bytes(); 2839 size_t running_sum_capacity_bytes = capacity_bytes();
2840 // For purposes of the running sum of capacity, verify against capacity 2840 // For purposes of the running sum of capacity, verify against capacity
2841 size_t capacity_in_use_bytes = capacity_bytes_slow(); 2841 size_t capacity_in_use_bytes = capacity_bytes_slow();
2842 assert(running_sum_capacity_bytes == capacity_in_use_bytes, 2842 assert(running_sum_capacity_bytes == capacity_in_use_bytes,
2843 err_msg("allocated_capacity_words() * BytesPerWord " SIZE_FORMAT 2843 err_msg("capacity_words() * BytesPerWord " SIZE_FORMAT
2844 " capacity_bytes_slow()" SIZE_FORMAT, 2844 " capacity_bytes_slow()" SIZE_FORMAT,
2845 running_sum_capacity_bytes, capacity_in_use_bytes)); 2845 running_sum_capacity_bytes, capacity_in_use_bytes));
2846 for (Metaspace::MetadataType i = Metaspace::ClassType; 2846 for (Metaspace::MetadataType i = Metaspace::ClassType;
2847 i < Metaspace:: MetadataTypeCount; 2847 i < Metaspace:: MetadataTypeCount;
2848 i = (Metaspace::MetadataType)(i + 1)) { 2848 i = (Metaspace::MetadataType)(i + 1)) {
2849 size_t capacity_in_use_bytes = capacity_bytes_slow(i); 2849 size_t capacity_in_use_bytes = capacity_bytes_slow(i);
2850 assert(allocated_capacity_bytes(i) == capacity_in_use_bytes, 2850 assert(capacity_bytes(i) == capacity_in_use_bytes,
2851 err_msg("allocated_capacity_bytes(%u) " SIZE_FORMAT 2851 err_msg("capacity_bytes(%u) " SIZE_FORMAT
2852 " capacity_bytes_slow(%u)" SIZE_FORMAT, 2852 " capacity_bytes_slow(%u)" SIZE_FORMAT,
2853 i, allocated_capacity_bytes(i), i, capacity_in_use_bytes)); 2853 i, capacity_bytes(i), i, capacity_in_use_bytes));
2854 } 2854 }
2855 #endif 2855 #endif
2856 } 2856 }
2857 2857
2858 void MetaspaceAux::verify_used() { 2858 void MetaspaceAux::verify_used() {
2859 #ifdef ASSERT 2859 #ifdef ASSERT
2860 size_t running_sum_used_bytes = allocated_used_bytes(); 2860 size_t running_sum_used_bytes = used_bytes();
2861 // For purposes of the running sum of used, verify against used 2861 // For purposes of the running sum of used, verify against used
2862 size_t used_in_use_bytes = used_bytes_slow(); 2862 size_t used_in_use_bytes = used_bytes_slow();
2863 assert(allocated_used_bytes() == used_in_use_bytes, 2863 assert(used_bytes() == used_in_use_bytes,
2864 err_msg("allocated_used_bytes() " SIZE_FORMAT 2864 err_msg("used_bytes() " SIZE_FORMAT
2865 " used_bytes_slow()" SIZE_FORMAT, 2865 " used_bytes_slow()" SIZE_FORMAT,
2866 allocated_used_bytes(), used_in_use_bytes)); 2866 used_bytes(), used_in_use_bytes));
2867 for (Metaspace::MetadataType i = Metaspace::ClassType; 2867 for (Metaspace::MetadataType i = Metaspace::ClassType;
2868 i < Metaspace:: MetadataTypeCount; 2868 i < Metaspace:: MetadataTypeCount;
2869 i = (Metaspace::MetadataType)(i + 1)) { 2869 i = (Metaspace::MetadataType)(i + 1)) {
2870 size_t used_in_use_bytes = used_bytes_slow(i); 2870 size_t used_in_use_bytes = used_bytes_slow(i);
2871 assert(allocated_used_bytes(i) == used_in_use_bytes, 2871 assert(used_bytes(i) == used_in_use_bytes,
2872 err_msg("allocated_used_bytes(%u) " SIZE_FORMAT 2872 err_msg("used_bytes(%u) " SIZE_FORMAT
2873 " used_bytes_slow(%u)" SIZE_FORMAT, 2873 " used_bytes_slow(%u)" SIZE_FORMAT,
2874 i, allocated_used_bytes(i), i, used_in_use_bytes)); 2874 i, used_bytes(i), i, used_in_use_bytes));
2875 } 2875 }
2876 #endif 2876 #endif
2877 } 2877 }
2878 2878
2879 void MetaspaceAux::verify_metrics() { 2879 void MetaspaceAux::verify_metrics() {