Loading...
Searching...
No Matches
v8-statistics.h
Go to the documentation of this file.
1// Copyright 2021 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef INCLUDE_V8_STATISTICS_H_
6#define INCLUDE_V8_STATISTICS_H_
7
8#include <stddef.h>
9#include <stdint.h>
10
11#include <memory>
12#include <utility>
13#include <vector>
14
15#include "v8-local-handle.h" // NOLINT(build/include_directory)
16#include "v8-memory-span.h" // NOLINT(build/include_directory)
17#include "v8-promise.h" // NOLINT(build/include_directory)
18#include "v8config.h" // NOLINT(build/include_directory)
19
20namespace v8 {
21
22class Context;
23class Isolate;
24
25namespace internal {
26class ReadOnlyHeap;
27} // namespace internal
28
35
44
56 public:
57 virtual ~MeasureMemoryDelegate() = default;
58
62 virtual bool ShouldMeasure(Local<Context> context) = 0;
63
65 struct Result {
74
80
83
86 };
87
93 virtual void MeasurementComplete(Result result) {}
94
105 static std::unique_ptr<MeasureMemoryDelegate> Default(
106 Isolate* isolate, Local<Context> context,
107 Local<Promise::Resolver> promise_resolver, MeasureMemoryMode mode);
108};
109
117 public:
119 size_t read_only_space_size() { return read_only_space_size_; }
120 size_t read_only_space_used_size() { return read_only_space_used_size_; }
122 return read_only_space_physical_size_;
123 }
124
125 private:
126 size_t read_only_space_size_;
127 size_t read_only_space_used_size_;
128 size_t read_only_space_physical_size_;
129
130 friend class V8;
131 friend class internal::ReadOnlyHeap;
132};
133
141 public:
143 size_t total_heap_size() { return total_heap_size_; }
144 size_t total_heap_size_executable() { return total_heap_size_executable_; }
145 size_t total_physical_size() { return total_physical_size_; }
146 size_t total_available_size() { return total_available_size_; }
147 size_t total_global_handles_size() { return total_global_handles_size_; }
148 size_t used_global_handles_size() { return used_global_handles_size_; }
149 size_t used_heap_size() { return used_heap_size_; }
150 size_t heap_size_limit() { return heap_size_limit_; }
151 size_t malloced_memory() { return malloced_memory_; }
152 size_t external_memory() { return external_memory_; }
153 size_t peak_malloced_memory() { return peak_malloced_memory_; }
154 size_t number_of_native_contexts() { return number_of_native_contexts_; }
155 size_t number_of_detached_contexts() { return number_of_detached_contexts_; }
156
162 uint64_t total_allocated_bytes() { return total_allocated_bytes_; }
163
168 size_t does_zap_garbage() { return does_zap_garbage_; }
169
170 private:
171 size_t total_heap_size_;
172 size_t total_heap_size_executable_;
173 size_t total_physical_size_;
174 size_t total_available_size_;
175 size_t used_heap_size_;
176 size_t heap_size_limit_;
177 size_t malloced_memory_;
178 size_t external_memory_;
179 size_t peak_malloced_memory_;
180 bool does_zap_garbage_;
181 size_t number_of_native_contexts_;
182 size_t number_of_detached_contexts_;
183 size_t total_global_handles_size_;
184 size_t used_global_handles_size_;
185 uint64_t total_allocated_bytes_;
186
187 friend class V8;
188 friend class Isolate;
189};
190
192 public:
194 const char* space_name() { return space_name_; }
195 size_t space_size() { return space_size_; }
196 size_t space_used_size() { return space_used_size_; }
197 size_t space_available_size() { return space_available_size_; }
198 size_t physical_space_size() { return physical_space_size_; }
199
200 private:
201 const char* space_name_;
202 size_t space_size_;
203 size_t space_used_size_;
204 size_t space_available_size_;
205 size_t physical_space_size_;
206
207 friend class Isolate;
208};
209
211 public:
213 const char* object_type() { return object_type_; }
214 const char* object_sub_type() { return object_sub_type_; }
215 size_t object_count() { return object_count_; }
216 size_t object_size() { return object_size_; }
217
218 private:
219 const char* object_type_;
220 const char* object_sub_type_;
221 size_t object_count_;
222 size_t object_size_;
223
224 friend class Isolate;
225};
226
228 public:
230 size_t code_and_metadata_size() { return code_and_metadata_size_; }
231 size_t bytecode_and_metadata_size() { return bytecode_and_metadata_size_; }
232 size_t external_script_source_size() { return external_script_source_size_; }
233 size_t cpu_profiler_metadata_size() { return cpu_profiler_metadata_size_; }
234
235 private:
236 size_t code_and_metadata_size_;
237 size_t bytecode_and_metadata_size_;
238 size_t external_script_source_size_;
239 size_t cpu_profiler_metadata_size_;
240
241 friend class Isolate;
242};
243
244} // namespace v8
245
246#endif // INCLUDE_V8_STATISTICS_H_
Definition: v8-statistics.h:227
size_t external_script_source_size()
Definition: v8-statistics.h:232
size_t bytecode_and_metadata_size()
Definition: v8-statistics.h:231
size_t code_and_metadata_size()
Definition: v8-statistics.h:230
size_t cpu_profiler_metadata_size()
Definition: v8-statistics.h:233
Definition: v8-statistics.h:210
const char * object_sub_type()
Definition: v8-statistics.h:214
size_t object_count()
Definition: v8-statistics.h:215
size_t object_size()
Definition: v8-statistics.h:216
const char * object_type()
Definition: v8-statistics.h:213
Definition: v8-statistics.h:191
size_t physical_space_size()
Definition: v8-statistics.h:198
const char * space_name()
Definition: v8-statistics.h:194
size_t space_used_size()
Definition: v8-statistics.h:196
size_t space_size()
Definition: v8-statistics.h:195
size_t space_available_size()
Definition: v8-statistics.h:197
Definition: v8-statistics.h:140
size_t total_global_handles_size()
Definition: v8-statistics.h:147
size_t used_heap_size()
Definition: v8-statistics.h:149
size_t total_physical_size()
Definition: v8-statistics.h:145
size_t heap_size_limit()
Definition: v8-statistics.h:150
size_t malloced_memory()
Definition: v8-statistics.h:151
size_t number_of_native_contexts()
Definition: v8-statistics.h:154
size_t does_zap_garbage()
Definition: v8-statistics.h:168
size_t number_of_detached_contexts()
Definition: v8-statistics.h:155
uint64_t total_allocated_bytes()
Definition: v8-statistics.h:162
size_t used_global_handles_size()
Definition: v8-statistics.h:148
size_t total_available_size()
Definition: v8-statistics.h:146
size_t total_heap_size_executable()
Definition: v8-statistics.h:144
size_t external_memory()
Definition: v8-statistics.h:152
size_t total_heap_size()
Definition: v8-statistics.h:143
size_t peak_malloced_memory()
Definition: v8-statistics.h:153
Definition: v8-isolate.h:291
Definition: v8-local-handle.h:366
Definition: v8-statistics.h:55
static std::unique_ptr< MeasureMemoryDelegate > Default(Isolate *isolate, Local< Context > context, Local< Promise::Resolver > promise_resolver, MeasureMemoryMode mode)
virtual bool ShouldMeasure(Local< Context > context)=0
virtual ~MeasureMemoryDelegate()=default
virtual void MeasurementComplete(Result result)
Definition: v8-statistics.h:93
Definition: v8-memory-span.h:48
Definition: v8-statistics.h:116
size_t read_only_space_physical_size()
Definition: v8-statistics.h:121
size_t read_only_space_size()
Definition: v8-statistics.h:119
size_t read_only_space_used_size()
Definition: v8-statistics.h:120
Definition: v8-initialization.h:61
Definition: libplatform.h:15
MeasureMemoryExecution
Definition: v8-statistics.h:43
MeasureMemoryMode
Definition: v8-statistics.h:34
Definition: v8-statistics.h:65
size_t wasm_code_size_in_bytes
Definition: v8-statistics.h:82
size_t wasm_metadata_size_in_bytes
Definition: v8-statistics.h:85
size_t unattributed_size_in_bytes
Definition: v8-statistics.h:79
const MemorySpan< const size_t > & sizes_in_bytes
Definition: v8-statistics.h:73
const MemorySpan< const Local< Context > > & contexts
Definition: v8-statistics.h:72
#define V8_EXPORT
Definition: v8config.h:855