Print more JIT memory use stats.
Also print the amount of resident(RSS) memory per category.
Test: observe ANR log on device
Bug: 119800099
Change-Id: Ic8a71de5c280fe42b656ed0e6383a45b0c185109
diff --git a/runtime/jit/jit_code_cache.cc b/runtime/jit/jit_code_cache.cc
index 6e7d4b0..3e1e108 100644
--- a/runtime/jit/jit_code_cache.cc
+++ b/runtime/jit/jit_code_cache.cc
@@ -1719,17 +1719,19 @@
void JitCodeCache::Dump(std::ostream& os) {
MutexLock mu(Thread::Current(), *Locks::jit_lock_);
- os << "Current JIT code cache size: " << PrettySize(GetCurrentRegion()->GetUsedMemoryForCode())
- << "\n"
- << "Current JIT data cache size: " << PrettySize(GetCurrentRegion()->GetUsedMemoryForData())
- << "\n";
+ os << "Current JIT code cache size (used / resident): "
+ << GetCurrentRegion()->GetUsedMemoryForCode() / KB << "KB / "
+ << GetCurrentRegion()->GetResidentMemoryForCode() / KB << "KB\n"
+ << "Current JIT data cache size (used / resident): "
+ << GetCurrentRegion()->GetUsedMemoryForData() / KB << "KB / "
+ << GetCurrentRegion()->GetResidentMemoryForData() / KB << "KB\n";
if (!Runtime::Current()->IsZygote()) {
os << "Zygote JIT code cache size (at point of fork): "
- << PrettySize(shared_region_.GetUsedMemoryForCode())
- << "\n"
+ << shared_region_.GetUsedMemoryForCode() / KB << "KB / "
+ << shared_region_.GetResidentMemoryForCode() / KB << "KB\n"
<< "Zygote JIT data cache size (at point of fork): "
- << PrettySize(shared_region_.GetUsedMemoryForData())
- << "\n";
+ << shared_region_.GetUsedMemoryForData() / KB << "KB / "
+ << shared_region_.GetResidentMemoryForData() / KB << "KB\n";
}
os << "Current JIT mini-debug-info size: " << PrettySize(GetJitMiniDebugInfoMemUsage()) << "\n"
<< "Current JIT capacity: " << PrettySize(GetCurrentRegion()->GetCurrentCapacity()) << "\n"
diff --git a/runtime/jit/jit_memory_region.h b/runtime/jit/jit_memory_region.h
index d09c46a..a5e3ef3 100644
--- a/runtime/jit/jit_memory_region.h
+++ b/runtime/jit/jit_memory_region.h
@@ -165,10 +165,18 @@
return used_memory_for_code_;
}
+ size_t GetResidentMemoryForCode() const REQUIRES(Locks::jit_lock_) {
+ return exec_end_;
+ }
+
size_t GetUsedMemoryForData() const REQUIRES(Locks::jit_lock_) {
return used_memory_for_data_;
}
+ size_t GetResidentMemoryForData() const REQUIRES(Locks::jit_lock_) {
+ return data_end_;
+ }
+
private:
template <typename T>
T* TranslateAddress(T* src_ptr, const MemMap& src, const MemMap& dst) {