OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 | 316 |
317 | 317 |
318 /** | 318 /** |
319 * HeapSnapshots record the state of the JS heap at some moment. | 319 * HeapSnapshots record the state of the JS heap at some moment. |
320 */ | 320 */ |
321 class V8EXPORT HeapSnapshot { | 321 class V8EXPORT HeapSnapshot { |
322 public: | 322 public: |
323 enum Type { | 323 enum Type { |
324 kFull = 0, // Heap snapshot with all instances and references. | 324 kFull = 0, // Heap snapshot with all instances and references. |
325 kAggregated = 1 // Snapshot doesn't contain individual heap entries, | 325 kAggregated = 1 // Snapshot doesn't contain individual heap entries, |
326 //instead they are grouped by constructor name. | 326 // instead they are grouped by constructor name. |
| 327 }; |
| 328 enum SerializationFormat { |
| 329 kJSON = 0 // See format description near 'Serialize' method. |
327 }; | 330 }; |
328 | 331 |
329 /** Returns heap snapshot type. */ | 332 /** Returns heap snapshot type. */ |
330 Type GetType() const; | 333 Type GetType() const; |
331 | 334 |
332 /** Returns heap snapshot UID (assigned by the profiler.) */ | 335 /** Returns heap snapshot UID (assigned by the profiler.) */ |
333 unsigned GetUid() const; | 336 unsigned GetUid() const; |
334 | 337 |
335 /** Returns heap snapshot title. */ | 338 /** Returns heap snapshot title. */ |
336 Handle<String> GetTitle() const; | 339 Handle<String> GetTitle() const; |
337 | 340 |
338 /** Returns the root node of the heap graph. */ | 341 /** Returns the root node of the heap graph. */ |
339 const HeapGraphNode* GetRoot() const; | 342 const HeapGraphNode* GetRoot() const; |
340 | 343 |
341 /** | 344 /** |
342 * Returns a diff between this snapshot and another one. Only snapshots | 345 * Returns a diff between this snapshot and another one. Only snapshots |
343 * of the same type can be compared. | 346 * of the same type can be compared. |
344 */ | 347 */ |
345 const HeapSnapshotsDiff* CompareWith(const HeapSnapshot* snapshot) const; | 348 const HeapSnapshotsDiff* CompareWith(const HeapSnapshot* snapshot) const; |
| 349 |
| 350 /** |
| 351 * Prepare a serialized representation of the snapshot. The result |
| 352 * is written into the stream provided in chunks of specified size. |
| 353 * The total length of the serialized snapshot is unknown in |
| 354 * advance, it is can be roughly equal to JS heap size (that means, |
| 355 * it can be really big - tens of megabytes). |
| 356 * |
| 357 * For the JSON format, heap contents are represented as an object |
| 358 * with the following structure: |
| 359 * |
| 360 * { |
| 361 * snapshot: {title: "...", uid: nnn}, |
| 362 * nodes: [ |
| 363 * meta-info (JSON string), |
| 364 * nodes themselves |
| 365 * ], |
| 366 * strings: [strings] |
| 367 * } |
| 368 * |
| 369 * Outgoing node links are stored after each node. Nodes reference strings |
| 370 * and other nodes by their indexes in corresponding arrays. |
| 371 */ |
| 372 void Serialize(OutputStream* stream, SerializationFormat format) const; |
346 }; | 373 }; |
347 | 374 |
348 | 375 |
349 /** | 376 /** |
350 * Interface for controlling heap profiling. | 377 * Interface for controlling heap profiling. |
351 */ | 378 */ |
352 class V8EXPORT HeapProfiler { | 379 class V8EXPORT HeapProfiler { |
353 public: | 380 public: |
354 /** Returns the number of snapshots taken. */ | 381 /** Returns the number of snapshots taken. */ |
355 static int GetSnapshotsCount(); | 382 static int GetSnapshotsCount(); |
(...skipping 14 matching lines...) Expand all Loading... |
370 }; | 397 }; |
371 | 398 |
372 | 399 |
373 } // namespace v8 | 400 } // namespace v8 |
374 | 401 |
375 | 402 |
376 #undef V8EXPORT | 403 #undef V8EXPORT |
377 | 404 |
378 | 405 |
379 #endif // V8_V8_PROFILER_H_ | 406 #endif // V8_V8_PROFILER_H_ |
OLD | NEW |