mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-05 13:40:18 +00:00
8350566: NMT: add size parameter to MemTracker::record_virtual_memory_tag
Reviewed-by: jsjolen, gziemski
This commit is contained in:
parent
196334fc39
commit
aff5aa72bb
@ -1532,7 +1532,7 @@ char* MetaspaceShared::reserve_address_space_for_archives(FileMapInfo* static_ma
|
||||
assert(base_address == nullptr ||
|
||||
(address)archive_space_rs.base() == base_address, "Sanity");
|
||||
// Register archive space with NMT.
|
||||
MemTracker::record_virtual_memory_tag(archive_space_rs.base(), mtClassShared);
|
||||
MemTracker::record_virtual_memory_tag(archive_space_rs, mtClassShared);
|
||||
return archive_space_rs.base();
|
||||
}
|
||||
return nullptr;
|
||||
@ -1605,9 +1605,8 @@ char* MetaspaceShared::reserve_address_space_for_archives(FileMapInfo* static_ma
|
||||
release_reserved_spaces(total_space_rs, archive_space_rs, class_space_rs);
|
||||
return nullptr;
|
||||
}
|
||||
// NMT: fix up the space tags
|
||||
MemTracker::record_virtual_memory_tag(archive_space_rs.base(), mtClassShared);
|
||||
MemTracker::record_virtual_memory_tag(class_space_rs.base(), mtClass);
|
||||
MemTracker::record_virtual_memory_tag(archive_space_rs, mtClassShared);
|
||||
MemTracker::record_virtual_memory_tag(class_space_rs, mtClass);
|
||||
} else {
|
||||
if (use_archive_base_addr && base_address != nullptr) {
|
||||
total_space_rs = MemoryReserver::reserve((char*) base_address,
|
||||
|
||||
@ -47,7 +47,7 @@ G1RegionToSpaceMapper::G1RegionToSpaceMapper(ReservedSpace rs,
|
||||
guarantee(is_power_of_2(page_size), "must be");
|
||||
guarantee(is_power_of_2(region_granularity), "must be");
|
||||
|
||||
MemTracker::record_virtual_memory_tag((address)rs.base(), mem_tag);
|
||||
MemTracker::record_virtual_memory_tag(rs, mem_tag);
|
||||
}
|
||||
|
||||
// Used to manually signal a mapper to handle a set of regions as committed.
|
||||
|
||||
@ -59,7 +59,7 @@ ParMarkBitMap::initialize(MemRegion covered_region)
|
||||
os::trace_page_sizes("Mark Bitmap", raw_bytes, raw_bytes,
|
||||
rs.base(), rs.size(), used_page_sz);
|
||||
|
||||
MemTracker::record_virtual_memory_tag((address)rs.base(), mtGC);
|
||||
MemTracker::record_virtual_memory_tag(rs, mtGC);
|
||||
|
||||
_virtual_space = new PSVirtualSpace(rs, page_sz);
|
||||
|
||||
|
||||
@ -256,7 +256,7 @@ ParallelCompactData::create_vspace(size_t count, size_t element_size)
|
||||
os::trace_page_sizes("Parallel Compact Data", raw_bytes, raw_bytes, rs.base(),
|
||||
rs.size(), page_sz);
|
||||
|
||||
MemTracker::record_virtual_memory_tag((address)rs.base(), mtGC);
|
||||
MemTracker::record_virtual_memory_tag(rs, mtGC);
|
||||
|
||||
PSVirtualSpace* vspace = new PSVirtualSpace(rs, page_sz);
|
||||
|
||||
|
||||
@ -87,7 +87,7 @@ void CardTable::initialize(void* region0_start, void* region1_start) {
|
||||
"card marking array");
|
||||
}
|
||||
|
||||
MemTracker::record_virtual_memory_tag((address)rs.base(), mtGC);
|
||||
MemTracker::record_virtual_memory_tag(rs, mtGC);
|
||||
|
||||
os::trace_page_sizes("Card Table", num_bytes, num_bytes,
|
||||
rs.base(), rs.size(), _page_size);
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
@ -83,7 +84,7 @@ void ShenandoahCardTable::initialize(const ReservedSpace& card_table) {
|
||||
vm_exit_during_initialization("Could not reserve enough space for the card marking array");
|
||||
}
|
||||
|
||||
MemTracker::record_virtual_memory_tag((address)card_table.base(), mtGC);
|
||||
MemTracker::record_virtual_memory_tag(card_table, mtGC);
|
||||
|
||||
os::trace_page_sizes("Card Table", _byte_map_size, _byte_map_size,
|
||||
card_table.base(), card_table.size(), _page_size);
|
||||
|
||||
@ -63,7 +63,7 @@ ShenandoahCollectionSet::ShenandoahCollectionSet(ShenandoahHeap* heap, ReservedS
|
||||
// subsystem for mapping not-yet-written-to pages to a single physical backing page,
|
||||
// but this is not guaranteed, and would confuse NMT and other memory accounting tools.
|
||||
|
||||
MemTracker::record_virtual_memory_tag(_map_space.base(), mtGC);
|
||||
MemTracker::record_virtual_memory_tag(_map_space, mtGC);
|
||||
|
||||
size_t page_size = os::vm_page_size();
|
||||
|
||||
|
||||
@ -303,7 +303,7 @@ jint ShenandoahHeap::initialize() {
|
||||
bitmap_size_orig, bitmap_page_size,
|
||||
bitmap.base(),
|
||||
bitmap.size(), bitmap.page_size());
|
||||
MemTracker::record_virtual_memory_tag(bitmap.base(), mtGC);
|
||||
MemTracker::record_virtual_memory_tag(bitmap, mtGC);
|
||||
_bitmap_region = MemRegion((HeapWord*) bitmap.base(), bitmap.size() / HeapWordSize);
|
||||
_bitmap_region_special = bitmap.special();
|
||||
|
||||
@ -327,7 +327,7 @@ jint ShenandoahHeap::initialize() {
|
||||
os::commit_memory_or_exit(verify_bitmap.base(), verify_bitmap.size(), bitmap_page_size, false,
|
||||
"Cannot commit verification bitmap memory");
|
||||
}
|
||||
MemTracker::record_virtual_memory_tag(verify_bitmap.base(), mtGC);
|
||||
MemTracker::record_virtual_memory_tag(verify_bitmap, mtGC);
|
||||
MemRegion verify_bitmap_region = MemRegion((HeapWord *) verify_bitmap.base(), verify_bitmap.size() / HeapWordSize);
|
||||
_verification_bit_map.initialize(_heap_region, verify_bitmap_region);
|
||||
_verifier = new ShenandoahVerifier(this, &_verification_bit_map);
|
||||
@ -341,7 +341,7 @@ jint ShenandoahHeap::initialize() {
|
||||
bitmap_size_orig, aux_bitmap_page_size,
|
||||
aux_bitmap.base(),
|
||||
aux_bitmap.size(), aux_bitmap.page_size());
|
||||
MemTracker::record_virtual_memory_tag(aux_bitmap.base(), mtGC);
|
||||
MemTracker::record_virtual_memory_tag(aux_bitmap, mtGC);
|
||||
_aux_bitmap_region = MemRegion((HeapWord*) aux_bitmap.base(), aux_bitmap.size() / HeapWordSize);
|
||||
_aux_bitmap_region_special = aux_bitmap.special();
|
||||
_aux_bit_map.initialize(_heap_region, _aux_bitmap_region);
|
||||
@ -359,7 +359,7 @@ jint ShenandoahHeap::initialize() {
|
||||
region_storage_size_orig, region_page_size,
|
||||
region_storage.base(),
|
||||
region_storage.size(), region_storage.page_size());
|
||||
MemTracker::record_virtual_memory_tag(region_storage.base(), mtGC);
|
||||
MemTracker::record_virtual_memory_tag(region_storage, mtGC);
|
||||
if (!region_storage.special()) {
|
||||
os::commit_memory_or_exit(region_storage.base(), region_storage_size, region_page_size, false,
|
||||
"Cannot commit region memory");
|
||||
|
||||
@ -119,7 +119,7 @@ bool JfrVirtualMemorySegment::initialize(size_t reservation_size_request_bytes)
|
||||
_rs.base(),
|
||||
_rs.size(),
|
||||
os::vm_page_size());
|
||||
MemTracker::record_virtual_memory_tag((address)_rs.base(), mtTracing);
|
||||
MemTracker::record_virtual_memory_tag(_rs, mtTracing);
|
||||
assert(is_aligned(_rs.base(), os::vm_page_size()), "invariant");
|
||||
assert(is_aligned(_rs.size(), os::vm_page_size()), "invariant");
|
||||
|
||||
|
||||
@ -797,7 +797,7 @@ void Metaspace::global_initialize() {
|
||||
}
|
||||
|
||||
// Mark class space as such
|
||||
MemTracker::record_virtual_memory_tag((address)rs.base(), mtClass);
|
||||
MemTracker::record_virtual_memory_tag(rs, mtClass);
|
||||
|
||||
// Initialize space
|
||||
Metaspace::initialize_class_space(rs);
|
||||
|
||||
@ -260,7 +260,7 @@ VirtualSpaceNode* VirtualSpaceNode::create_node(size_t word_size,
|
||||
if (!rs.is_reserved()) {
|
||||
vm_exit_out_of_memory(word_size * BytesPerWord, OOM_MMAP_ERROR, "Failed to reserve memory for metaspace");
|
||||
}
|
||||
MemTracker::record_virtual_memory_tag(rs.base(), mtMetaspace);
|
||||
MemTracker::record_virtual_memory_tag(rs, mtMetaspace);
|
||||
assert_is_aligned(rs.base(), chunklevel::MAX_CHUNK_BYTE_SIZE);
|
||||
InternalStats::inc_num_vsnodes_births();
|
||||
return new VirtualSpaceNode(rs, true, limiter, reserve_words_counter, commit_words_counter);
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
#ifndef SHARE_NMT_MEMTRACKER_HPP
|
||||
#define SHARE_NMT_MEMTRACKER_HPP
|
||||
|
||||
#include "memory/reservedSpace.hpp"
|
||||
#include "nmt/mallocTracker.hpp"
|
||||
#include "nmt/nmtCommon.hpp"
|
||||
#include "nmt/memoryFileTracker.hpp"
|
||||
@ -220,12 +221,16 @@ class MemTracker : AllStatic {
|
||||
}
|
||||
}
|
||||
|
||||
static inline void record_virtual_memory_tag(void* addr, MemTag mem_tag) {
|
||||
static inline void record_virtual_memory_tag(const ReservedSpace& rs, MemTag mem_tag) {
|
||||
record_virtual_memory_tag(rs.base(), rs.size(), mem_tag);
|
||||
}
|
||||
|
||||
static inline void record_virtual_memory_tag(void* addr, size_t size, MemTag mem_tag) {
|
||||
assert_post_init();
|
||||
if (!enabled()) return;
|
||||
if (addr != nullptr) {
|
||||
NmtVirtualMemoryLocker nvml;
|
||||
VirtualMemoryTracker::set_reserved_region_tag((address)addr, mem_tag);
|
||||
VirtualMemoryTracker::set_reserved_region_type((address)addr, size, mem_tag);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -413,7 +413,7 @@ bool VirtualMemoryTracker::add_reserved_region(address base_addr, size_t size,
|
||||
}
|
||||
}
|
||||
|
||||
void VirtualMemoryTracker::set_reserved_region_tag(address addr, MemTag mem_tag) {
|
||||
void VirtualMemoryTracker::set_reserved_region_type(address addr, size_t size, MemTag mem_tag) {
|
||||
assert(addr != nullptr, "Invalid address");
|
||||
assert(_reserved_regions != nullptr, "Sanity check");
|
||||
MemTracker::assert_locked();
|
||||
|
||||
@ -386,7 +386,7 @@ class VirtualMemoryTracker : AllStatic {
|
||||
static bool remove_uncommitted_region (address base_addr, size_t size);
|
||||
static bool remove_released_region (address base_addr, size_t size);
|
||||
static bool remove_released_region (ReservedMemoryRegion* rgn);
|
||||
static void set_reserved_region_tag (address addr, MemTag mem_tag);
|
||||
static void set_reserved_region_type (address addr, size_t size, MemTag mem_tag);
|
||||
|
||||
// Given an existing memory mapping registered with NMT, split the mapping in
|
||||
// two. The newly created two mappings will be registered under the call
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user