summaryrefslogtreecommitdiffstats
path: root/runtime/runtime_stats.h
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/runtime_stats.h')
-rw-r--r--runtime/runtime_stats.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/runtime/runtime_stats.h b/runtime/runtime_stats.h
new file mode 100644
index 0000000..55e57ec
--- /dev/null
+++ b/runtime/runtime_stats.h
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef ART_SRC_RUNTIME_STATS_H_
+#define ART_SRC_RUNTIME_STATS_H_
+
+#include <stdint.h>
+
+namespace art {
+
+// These must match the values in dalvik.system.VMDebug.
+enum StatKinds {
+ KIND_ALLOCATED_OBJECTS = 1<<0,
+ KIND_ALLOCATED_BYTES = 1<<1,
+ KIND_FREED_OBJECTS = 1<<2,
+ KIND_FREED_BYTES = 1<<3,
+ KIND_GC_INVOCATIONS = 1<<4,
+ KIND_CLASS_INIT_COUNT = 1<<5,
+ KIND_CLASS_INIT_TIME = 1<<6,
+
+ // These values exist for backward compatibility.
+ KIND_EXT_ALLOCATED_OBJECTS = 1<<12,
+ KIND_EXT_ALLOCATED_BYTES = 1<<13,
+ KIND_EXT_FREED_OBJECTS = 1<<14,
+ KIND_EXT_FREED_BYTES = 1<<15,
+
+ KIND_GLOBAL_ALLOCATED_OBJECTS = KIND_ALLOCATED_OBJECTS,
+ KIND_GLOBAL_ALLOCATED_BYTES = KIND_ALLOCATED_BYTES,
+ KIND_GLOBAL_FREED_OBJECTS = KIND_FREED_OBJECTS,
+ KIND_GLOBAL_FREED_BYTES = KIND_FREED_BYTES,
+ KIND_GLOBAL_GC_INVOCATIONS = KIND_GC_INVOCATIONS,
+ KIND_GLOBAL_CLASS_INIT_COUNT = KIND_CLASS_INIT_COUNT,
+ KIND_GLOBAL_CLASS_INIT_TIME = KIND_CLASS_INIT_TIME,
+
+ KIND_THREAD_ALLOCATED_OBJECTS = KIND_ALLOCATED_OBJECTS << 16,
+ KIND_THREAD_ALLOCATED_BYTES = KIND_ALLOCATED_BYTES << 16,
+ KIND_THREAD_FREED_OBJECTS = KIND_FREED_OBJECTS << 16,
+ KIND_THREAD_FREED_BYTES = KIND_FREED_BYTES << 16,
+
+ KIND_THREAD_GC_INVOCATIONS = KIND_GC_INVOCATIONS << 16,
+
+ // TODO: failedAllocCount, failedAllocSize
+};
+
+/*
+ * Memory allocation profiler state. This is used both globally and
+ * per-thread.
+ */
+struct PACKED(4) RuntimeStats {
+ RuntimeStats() {
+ Clear(~0);
+ }
+
+ void Clear(int flags) {
+ if ((flags & KIND_ALLOCATED_OBJECTS) != 0) {
+ allocated_objects = 0;
+ }
+ if ((flags & KIND_ALLOCATED_BYTES) != 0) {
+ allocated_bytes = 0;
+ }
+ if ((flags & KIND_FREED_OBJECTS) != 0) {
+ freed_objects = 0;
+ }
+ if ((flags & KIND_FREED_BYTES) != 0) {
+ freed_bytes = 0;
+ }
+ if ((flags & KIND_GC_INVOCATIONS) != 0) {
+ gc_for_alloc_count = 0;
+ }
+ if ((flags & KIND_CLASS_INIT_COUNT) != 0) {
+ class_init_count = 0;
+ }
+ if ((flags & KIND_CLASS_INIT_TIME) != 0) {
+ class_init_time_ns = 0;
+ }
+ }
+
+ // Number of objects allocated.
+ int allocated_objects;
+ // Cumulative size of all objects allocated.
+ int allocated_bytes;
+
+ // Number of objects freed.
+ int freed_objects;
+ // Cumulative size of all freed objects.
+ int freed_bytes;
+
+ // Number of times an allocation triggered a GC.
+ int gc_for_alloc_count;
+
+ // Number of initialized classes.
+ int class_init_count;
+ // Cumulative time spent in class initialization.
+ uint64_t class_init_time_ns;
+
+ DISALLOW_COPY_AND_ASSIGN(RuntimeStats);
+};
+
+} // namespace art
+
+#endif // ART_SRC_HEAP_H_