OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 syntax = "proto2"; | 5 syntax = "proto2"; |
6 | 6 |
7 option optimize_for = LITE_RUNTIME; | 7 option optimize_for = LITE_RUNTIME; |
8 | 8 |
9 package metrics; | 9 package metrics; |
10 | 10 |
11 // Next tag: 6 | 11 // Next tag: 7 |
12 message MemoryLeakReportProto { | 12 message MemoryLeakReportProto { |
13 // The call stack at which the leak was found. This is a list of offsets | 13 // The call stack at which the leak was found. This is a list of offsets |
14 // within the program binary. The first entry is the deepest level of the call | 14 // within the program binary. The first entry is the deepest level of the call |
15 // stack. | 15 // stack. |
16 // | 16 // |
17 // Some call stack entries may not be within the Chrome binary (e.g. | 17 // Some call stack entries may not be within the Chrome binary (e.g. |
18 // JavaScript code). Those entries are given as the absolute offset in memory. | 18 // JavaScript code). Those entries are given as the absolute offset in memory. |
19 // | 19 // |
20 // The offsets within Chrome are determined by whether the original call stack | 20 // The offsets within Chrome are determined by whether the original call stack |
21 // address was within the executable region of the Chrome binary's mapping in | 21 // address was within the executable region of the Chrome binary's mapping in |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 optional Params params = 3; | 62 optional Params params = 3; |
63 | 63 |
64 // The type of Chrome process on which this leak report was generated. | 64 // The type of Chrome process on which this leak report was generated. |
65 enum ProcessType { | 65 enum ProcessType { |
66 UNKNOWN_PROCESS = 0; | 66 UNKNOWN_PROCESS = 0; |
67 BROWSER_PROCESS = 1; | 67 BROWSER_PROCESS = 1; |
68 RENDERER_PROCESS = 2; | 68 RENDERER_PROCESS = 2; |
69 } | 69 } |
70 optional ProcessType source_process = 5; | 70 optional ProcessType source_process = 5; |
71 | 71 |
| 72 // The build ID of the Chrome binary from which this leak report was obtained. |
| 73 // The build ID is typically a 16- or 20-byte hash that is generated by the |
| 74 // compiler that built the binary. This value will be read directly from the |
| 75 // GNU build notes section of the Chrome binary. |
| 76 optional bytes build_id = 6; |
| 77 |
72 ////////////////////////////////////////////////////////////////////////////// | 78 ////////////////////////////////////////////////////////////////////////////// |
73 | 79 |
74 // Represents a single snapshot of the internal bookkeeping of the Runtime | 80 // Represents a single snapshot of the internal bookkeeping of the Runtime |
75 // Memory Leak Detector, which tracks the number of extant allocations (a | 81 // Memory Leak Detector, which tracks the number of extant allocations (a |
76 // block of heap memory that has been allocated but not yet freed). | 82 // block of heap memory that has been allocated but not yet freed). |
77 // | 83 // |
78 // Next tag: 3 | 84 // Next tag: 3 |
79 message AllocationBreakdown { | 85 message AllocationBreakdown { |
80 // Table of number of extant allocations for each allocation size. The i-th | 86 // Table of number of extant allocations for each allocation size. The i-th |
81 // entry in the vector is the net number of allocations for sizes in the | 87 // entry in the vector is the net number of allocations for sizes in the |
82 // range [i * 4, i * 4 + 3]. | 88 // range [i * 4, i * 4 + 3]. |
83 repeated uint32 counts_by_size = 1; | 89 repeated uint32 counts_by_size = 1; |
84 | 90 |
85 // The number of extant allocations with size = |size_bytes| and made from | 91 // The number of extant allocations with size = |size_bytes| and made from |
86 // the call site given by |call_stack|. If it is not set, it means tracking | 92 // the call site given by |call_stack|. If it is not set, it means tracking |
87 // of allocs per call site for allocation size = |size_bytes| has not yet | 93 // of allocs per call site for allocation size = |size_bytes| has not yet |
88 // begun at the time of this entry. | 94 // begun at the time of this entry. |
89 optional uint32 count_for_call_stack = 2; | 95 optional uint32 count_for_call_stack = 2; |
90 } | 96 } |
91 | 97 |
92 // A record of past allocation data leading up to the circumstances that | 98 // A record of past allocation data leading up to the circumstances that |
93 // generated the current leak report. | 99 // generated the current leak report. |
94 // | 100 // |
95 // A new snapshot is taken every |analysis_interval_bytes| of memory | 101 // A new snapshot is taken every |analysis_interval_bytes| of memory |
96 // allocation. The oldest record is at the beginning. The most recent record, | 102 // allocation. The oldest record is at the beginning. The most recent record, |
97 // taken at the time the report was generated, is at the end. | 103 // taken at the time the report was generated, is at the end. |
98 repeated AllocationBreakdown alloc_breakdown_history = 4; | 104 repeated AllocationBreakdown alloc_breakdown_history = 4; |
99 } | 105 } |
OLD | NEW |