diff options
author | Hiroshi Yamauchi <yamauchi@google.com> | 2014-04-11 22:43:08 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-04-11 22:43:08 +0000 |
commit | 248015696ee087878656fb53e37cbf7be2b97e4d (patch) | |
tree | 3c5f46f34c36628918317ee8a0caf6acb5ea88fc | |
parent | 37df286803b39fe559dd0fe342a661115d96ae57 (diff) | |
parent | d20aba14a3cb522e933800a164f7dc10eba21da3 (diff) | |
download | art-248015696ee087878656fb53e37cbf7be2b97e4d.zip art-248015696ee087878656fb53e37cbf7be2b97e4d.tar.gz art-248015696ee087878656fb53e37cbf7be2b97e4d.tar.bz2 |
Merge "Fix an occasional ThreadStress crash."
-rw-r--r-- | runtime/gc/heap.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc index efd1c7a..e44ec6a 100644 --- a/runtime/gc/heap.cc +++ b/runtime/gc/heap.cc @@ -679,7 +679,8 @@ void Heap::DumpGcPerformanceInfo(std::ostream& os) { for (auto& collector : garbage_collectors_) { const CumulativeLogger& logger = collector->GetCumulativeTimings(); const size_t iterations = logger.GetIterations(); - if (iterations != 0) { + const Histogram<uint64_t>& pause_histogram = collector->GetPauseHistogram(); + if (iterations != 0 && pause_histogram.SampleSize() != 0) { os << ConstDumpable<CumulativeLogger>(logger); const uint64_t total_ns = logger.GetTotalNs(); const uint64_t total_pause_ns = collector->GetTotalPausedTimeNs(); @@ -687,8 +688,8 @@ void Heap::DumpGcPerformanceInfo(std::ostream& os) { const uint64_t freed_bytes = collector->GetTotalFreedBytes(); const uint64_t freed_objects = collector->GetTotalFreedObjects(); Histogram<uint64_t>::CumulativeData cumulative_data; - collector->GetPauseHistogram().CreateHistogram(&cumulative_data); - collector->GetPauseHistogram().PrintConfidenceIntervals(os, 0.99, cumulative_data); + pause_histogram.CreateHistogram(&cumulative_data); + pause_histogram.PrintConfidenceIntervals(os, 0.99, cumulative_data); os << collector->GetName() << " total time: " << PrettyDuration(total_ns) << " mean time: " << PrettyDuration(total_ns / iterations) << "\n" << collector->GetName() << " freed: " << freed_objects @@ -2796,7 +2797,7 @@ void Heap::RegisterNativeAllocation(JNIEnv* env, int bytes) { if (IsGcConcurrent()) { RequestConcurrentGC(self); } else { - CollectGarbageInternal(gc_type, kGcCauseForAlloc, false); + CollectGarbageInternal(gc_type, kGcCauseForNativeAlloc, false); } } } |