comparison src/share/vm/runtime/virtualspace.cpp @ 6197:d2a62e0f25eb

6995781: Native Memory Tracking (Phase 1) 7151532: DCmd for hotspot native memory tracking Summary: Implementation of native memory tracking phase 1, which tracks VM native memory usage, and related DCmd Reviewed-by: acorn, coleenp, fparain
author zgu
date Thu, 28 Jun 2012 17:03:16 -0400
parents 7df3125953cb
children da91efe96a93
comparison
equal deleted inserted replaced
6174:74533f63b116 6197:d2a62e0f25eb
24 24
25 #include "precompiled.hpp" 25 #include "precompiled.hpp"
26 #include "oops/markOop.hpp" 26 #include "oops/markOop.hpp"
27 #include "oops/oop.inline.hpp" 27 #include "oops/oop.inline.hpp"
28 #include "runtime/virtualspace.hpp" 28 #include "runtime/virtualspace.hpp"
29 #include "services/memTracker.hpp"
29 #ifdef TARGET_OS_FAMILY_linux 30 #ifdef TARGET_OS_FAMILY_linux
30 # include "os_linux.inline.hpp" 31 # include "os_linux.inline.hpp"
31 #endif 32 #endif
32 #ifdef TARGET_OS_FAMILY_solaris 33 #ifdef TARGET_OS_FAMILY_solaris
33 # include "os_solaris.inline.hpp" 34 # include "os_solaris.inline.hpp"
487 ReservedSpace(size, alignment, large, 488 ReservedSpace(size, alignment, large,
488 requested_address, 489 requested_address,
489 (UseCompressedOops && (Universe::narrow_oop_base() != NULL) && 490 (UseCompressedOops && (Universe::narrow_oop_base() != NULL) &&
490 Universe::narrow_oop_use_implicit_null_checks()) ? 491 Universe::narrow_oop_use_implicit_null_checks()) ?
491 lcm(os::vm_page_size(), alignment) : 0) { 492 lcm(os::vm_page_size(), alignment) : 0) {
493 if (base() > 0) {
494 MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap);
495 }
496
492 // Only reserved space for the java heap should have a noaccess_prefix 497 // Only reserved space for the java heap should have a noaccess_prefix
493 // if using compressed oops. 498 // if using compressed oops.
494 protect_noaccess_prefix(size); 499 protect_noaccess_prefix(size);
495 } 500 }
496 501
502 ReservedSpace(prefix_size, prefix_align, suffix_size, suffix_align, 507 ReservedSpace(prefix_size, prefix_align, suffix_size, suffix_align,
503 requested_address, 508 requested_address,
504 (UseCompressedOops && (Universe::narrow_oop_base() != NULL) && 509 (UseCompressedOops && (Universe::narrow_oop_base() != NULL) &&
505 Universe::narrow_oop_use_implicit_null_checks()) ? 510 Universe::narrow_oop_use_implicit_null_checks()) ?
506 lcm(os::vm_page_size(), prefix_align) : 0) { 511 lcm(os::vm_page_size(), prefix_align) : 0) {
512 if (base() > 0) {
513 MemTracker::record_virtual_memory_type((address)base(), mtJavaHeap);
514 }
515
507 protect_noaccess_prefix(prefix_size+suffix_size); 516 protect_noaccess_prefix(prefix_size+suffix_size);
508 } 517 }
509 518
510 // Reserve space for code segment. Same as Java heap only we mark this as 519 // Reserve space for code segment. Same as Java heap only we mark this as
511 // executable. 520 // executable.
512 ReservedCodeSpace::ReservedCodeSpace(size_t r_size, 521 ReservedCodeSpace::ReservedCodeSpace(size_t r_size,
513 size_t rs_align, 522 size_t rs_align,
514 bool large) : 523 bool large) :
515 ReservedSpace(r_size, rs_align, large, /*executable*/ true) { 524 ReservedSpace(r_size, rs_align, large, /*executable*/ true) {
525 MemTracker::record_virtual_memory_type((address)base(), mtCode);
516 } 526 }
517 527
518 // VirtualSpace 528 // VirtualSpace
519 529
520 VirtualSpace::VirtualSpace() { 530 VirtualSpace::VirtualSpace() {