539 G1StringDedupEntry** entry2 = (*entry1)->next_addr(); 540 while (*entry2 != NULL) { 541 typeArrayOop value2 = (*entry2)->obj(); 542 guarantee(!equals(value1, value2), "Table entries must not have identical arrays"); 543 entry2 = (*entry2)->next_addr(); 544 } 545 entry1 = (*entry1)->next_addr(); 546 } 547 } 548 } 549 550 void G1StringDedupTable::trim_entry_cache() { 551 MutexLockerEx ml(StringDedupTable_lock, Mutex::_no_safepoint_check_flag); 552 size_t max_cache_size = (size_t)(_table->_size * _max_cache_factor); 553 _entry_cache->trim(max_cache_size); 554 } 555 556 void G1StringDedupTable::print_statistics(outputStream* st) { 557 st->print_cr( 558 " [Table]\n" 559 " [Memory Usage: "G1_STRDEDUP_BYTES_FORMAT_NS"]\n" 560 " [Size: "SIZE_FORMAT", Min: "SIZE_FORMAT", Max: "SIZE_FORMAT"]\n" 561 " [Entries: "UINTX_FORMAT", Load: "G1_STRDEDUP_PERCENT_FORMAT_NS", Cached: " UINTX_FORMAT ", Added: "UINTX_FORMAT", Removed: "UINTX_FORMAT"]\n" 562 " [Resize Count: "UINTX_FORMAT", Shrink Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS"), Grow Threshold: "UINTX_FORMAT"("G1_STRDEDUP_PERCENT_FORMAT_NS")]\n" 563 " [Rehash Count: "UINTX_FORMAT", Rehash Threshold: "UINTX_FORMAT", Hash Seed: 0x%x]\n" 564 " [Age Threshold: "UINTX_FORMAT"]", 565 G1_STRDEDUP_BYTES_PARAM(_table->_size * sizeof(G1StringDedupEntry*) + (_table->_entries + _entry_cache->size()) * sizeof(G1StringDedupEntry)), 566 _table->_size, _min_size, _max_size, 567 _table->_entries, (double)_table->_entries / (double)_table->_size * 100.0, _entry_cache->size(), _entries_added, _entries_removed, 568 _resize_count, _table->_shrink_threshold, _shrink_load_factor * 100.0, _table->_grow_threshold, _grow_load_factor * 100.0, 569 _rehash_count, _rehash_threshold, _table->_hash_seed, 570 StringDeduplicationAgeThreshold); 571 } | 539 G1StringDedupEntry** entry2 = (*entry1)->next_addr(); 540 while (*entry2 != NULL) { 541 typeArrayOop value2 = (*entry2)->obj(); 542 guarantee(!equals(value1, value2), "Table entries must not have identical arrays"); 543 entry2 = (*entry2)->next_addr(); 544 } 545 entry1 = (*entry1)->next_addr(); 546 } 547 } 548 } 549 550 void G1StringDedupTable::trim_entry_cache() { 551 MutexLockerEx ml(StringDedupTable_lock, Mutex::_no_safepoint_check_flag); 552 size_t max_cache_size = (size_t)(_table->_size * _max_cache_factor); 553 _entry_cache->trim(max_cache_size); 554 } 555 556 void G1StringDedupTable::print_statistics(outputStream* st) { 557 st->print_cr( 558 " [Table]\n" 559 " [Memory Usage: " G1_STRDEDUP_BYTES_FORMAT_NS "]\n" 560 " [Size: " SIZE_FORMAT ", Min: " SIZE_FORMAT ", Max: " SIZE_FORMAT "]\n" 561 " [Entries: " UINTX_FORMAT ", Load: " G1_STRDEDUP_PERCENT_FORMAT_NS ", Cached: " UINTX_FORMAT ", Added: " UINTX_FORMAT ", Removed: " UINTX_FORMAT "]\n" 562 " [Resize Count: " UINTX_FORMAT ", Shrink Threshold: " UINTX_FORMAT "(" G1_STRDEDUP_PERCENT_FORMAT_NS "), Grow Threshold: " UINTX_FORMAT "(" G1_STRDEDUP_PERCENT_FORMAT_NS ")]\n" 563 " [Rehash Count: " UINTX_FORMAT ", Rehash Threshold: " UINTX_FORMAT ", Hash Seed: 0x%x]\n" 564 " [Age Threshold: " UINTX_FORMAT "]", 565 G1_STRDEDUP_BYTES_PARAM(_table->_size * sizeof(G1StringDedupEntry*) + (_table->_entries + _entry_cache->size()) * sizeof(G1StringDedupEntry)), 566 _table->_size, _min_size, _max_size, 567 _table->_entries, (double)_table->_entries / (double)_table->_size * 100.0, _entry_cache->size(), _entries_added, _entries_removed, 568 _resize_count, _table->_shrink_threshold, _shrink_load_factor * 100.0, _table->_grow_threshold, _grow_load_factor * 100.0, 569 _rehash_count, _rehash_threshold, _table->_hash_seed, 570 StringDeduplicationAgeThreshold); 571 } |