hotspot/src/share/vm/services/lowMemoryDetector.hpp
// low memory detection for collected memory pools.
static inline void detect_low_memory_for_collected_pools() {
{- -------------------------------------------
(1) もし閾値超過検出機能が有効になっていなければ (= LowMemoryDetector::is_enabled_for_collected_pools() が false ならば)
何もすることはないので, ここでリターン.
---------------------------------------- -}
// no-op if low memory detection not enabled
if (!is_enabled_for_collected_pools()) {
return;
}
{- -------------------------------------------
(1) CollectedMemoryPool のサブクラスである全ての MemoryPool に対して,
LowMemoryDetector::is_enabled() を呼んで
閾値超過通知機能が有効になっているかどうかを調べていく.
有効になっているものについては, 現在の使用量と usage threshold の high threshold を比較し,
使用量の方が上回っていれば, LowMemoryDetector::detect_low_memory() でさらなる確認&通知処理を行う.
---------------------------------------- -}
int num_memory_pools = MemoryService::num_memory_pools();
for (int i=0; i<num_memory_pools; i++) {
MemoryPool* pool = MemoryService::get_memory_pool(i);
// if low memory detection is enabled then check if the
// current used exceeds the high threshold
if (pool->is_collected_pool() && is_enabled(pool)) {
size_t used = pool->used_in_bytes();
size_t high = pool->usage_threshold()->high_threshold();
if (used > high) {
detect_low_memory(pool);
}
}
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.