< prev index next > src/hotspot/share/classfile/stringTable.cpp
Print this page
size_t StringTable::item_added() {
return Atomic::add(&_items_count, (size_t)1);
}
- size_t StringTable::add_items_to_clean(size_t ndead) {
- size_t total = Atomic::add(&_uncleaned_items_count, (size_t)ndead);
- log_trace(stringtable)(
- "Uncleaned items:" SIZE_FORMAT " added: " SIZE_FORMAT " total:" SIZE_FORMAT,
- _uncleaned_items_count, ndead, total);
- return total;
- }
-
void StringTable::item_removed() {
Atomic::add(&_items_count, (size_t)-1);
}
double StringTable::get_load_factor() {
- return (double)_items_count/_current_size;
+ return double(_items_count)/double(_current_size);
}
double StringTable::get_dead_factor() {
- return (double)_uncleaned_items_count/_current_size;
+ return double(_uncleaned_items_count)/double(_current_size);
}
size_t StringTable::table_size() {
return ((size_t)1) << _local_table->get_size_log2(Thread::current());
}
bdt.done(jt);
}
log_debug(stringtable)("Cleaned %ld of %ld", stdc._count, stdc._item);
}
- void StringTable::check_concurrent_work() {
+ void StringTable::gc_notification(size_t dead_count) {
+ _uncleaned_items_count += dead_count;
+
if (_has_work) {
return;
}
double load_factor = StringTable::get_load_factor();
if ((dead_factor > load_factor) ||
(load_factor > PREF_AVG_LIST_LEN) ||
(dead_factor > CLEAN_DEAD_HIGH_WATER_MARK)) {
log_debug(stringtable)("Concurrent work triggered, live factor: %g dead factor: %g",
load_factor, dead_factor);
+ _uncleaned_items_count = 0;
trigger_concurrent_work();
}
}
void StringTable::do_concurrent_work(JavaThread* jt) {
< prev index next >