Mercurial > hg > truffle
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() { |