Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(227)

Side by Side Diff: third_party/WebKit/Source/wtf/Allocator.md

Issue 2488933002: Fix links in Source/wtf/Allocator.md (Closed)
Patch Set: rebase Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Memory management in Blink 1 # Memory management in Blink
2 2
3 This document gives a high-level overview of the memory management in Blink. 3 This document gives a high-level overview of the memory management in Blink.
4 4
5 [TOC] 5 [TOC]
6 6
7 ## Memory allocators 7 ## Memory allocators
8 8
9 Blink objects are allocated by one of the following four memory allocators. 9 Blink objects are allocated by one of the following four memory allocators.
10 10
11 ### Oilpan 11 ### Oilpan
12 12
13 Oilpan is a garbage collection system in Blink. 13 Oilpan is a garbage collection system in Blink.
14 The lifetime of objects allocated by Oilpan is automatically managed. 14 The lifetime of objects allocated by Oilpan is automatically managed.
15 The following objects are allocated by Oilpan: 15 The following objects are allocated by Oilpan:
16 16
17 * Objects that inherit from GarbageCollected<T> or GarbageCollectedFinalized<T>. 17 * Objects that inherit from GarbageCollected<T> or GarbageCollectedFinalized<T>.
18 18
19 * HeapVector<T>, HeapHashSet<T>, HeapHashMap<T, U> etc 19 * HeapVector<T>, HeapHashSet<T>, HeapHashMap<T, U> etc
20 20
21 The implementation is in platform/heap/. 21 The implementation is in platform/heap/.
22 See [BlinkGCDesign.md](platform/heap/BlinkGCDesign.md) to learn the design. 22 See [BlinkGCDesign.md](../platform/heap/BlinkGCDesign.md) to learn the design.
23 23
24 ### PartitionAlloc 24 ### PartitionAlloc
25 25
26 PartitionAlloc is Blink's default memory allocator. 26 PartitionAlloc is Blink's default memory allocator.
27 PartitionAlloc is highly optimized for performance and security requirements 27 PartitionAlloc is highly optimized for performance and security requirements
28 in Blink. All Blink objects that don't need a GC or discardable memory should be 28 in Blink. All Blink objects that don't need a GC or discardable memory should be
29 allocated by PartitionAlloc (instead of malloc). 29 allocated by PartitionAlloc (instead of malloc).
30 The following objects are allocated by PartitionAlloc: 30 The following objects are allocated by PartitionAlloc:
31 31
32 * Objects that have a USING_FAST_MALLOC macro. 32 * Objects that have a USING_FAST_MALLOC macro.
33 33
34 * Nodes (which will be moved to Oilpan in the near future) 34 * Nodes (which will be moved to Oilpan in the near future)
35 35
36 * LayoutObjects 36 * LayoutObjects
37 37
38 * Strings, Vectors, HashTables, ArrayBuffers and other primitive containers. 38 * Strings, Vectors, HashTables, ArrayBuffers and other primitive containers.
39 39
40 The implementation is in wtf/Partition*. 40 The implementation is in /base/allocator/partition_allocator.
41 See [PartitionAlloc.md](wtf/PartitionAlloc.md) to learn the design. 41 See [PartitionAlloc.md](/base/allocator/partition_allocator/PartitionAlloc.md)
42 to learn the design.
42 43
43 ### Discardable memory 44 ### Discardable memory
44 45
45 Discardable memory is a memory allocator that automatically discards 46 Discardable memory is a memory allocator that automatically discards
46 (not-locked) objects under memory pressure. Currently SharedBuffers 47 (not-locked) objects under memory pressure. Currently SharedBuffers
47 (which are mainly used as backing storage of Resource objects) are the only 48 (which are mainly used as backing storage of Resource objects) are the only
48 user of the discardable memory. 49 user of the discardable memory.
49 50
50 The implementation is in src/base/memory/discardable_memory.*. 51 The implementation is in src/base/memory/discardable_memory.*.
51 See [this document](https://docs.google.com/document/d/1aNdOF_72_eG2KUM_z9kHdbT_ fEupWhaDALaZs5D8IAg/edit) 52 See [this document](https://docs.google.com/document/d/1aNdOF_72_eG2KUM_z9kHdbT_ fEupWhaDALaZs5D8IAg/edit)
(...skipping 14 matching lines...) Expand all
66 67
67 In summary, Blink objects (except several special objects) should be allocated 68 In summary, Blink objects (except several special objects) should be allocated
68 using Oilpan or PartitionAlloc. malloc is discouraged. 69 using Oilpan or PartitionAlloc. malloc is discouraged.
69 70
70 The following is a basic rule to determine which of Oilpan or PartitionAlloc 71 The following is a basic rule to determine which of Oilpan or PartitionAlloc
71 you should use when allocating a new object: 72 you should use when allocating a new object:
72 73
73 * Use Oilpan if you want a GC to manage the lifetime of the object. 74 * Use Oilpan if you want a GC to manage the lifetime of the object.
74 You need to make the object inherit from GarbageCollected<T> or 75 You need to make the object inherit from GarbageCollected<T> or
75 GarbageCollectedFinalized<T>. See 76 GarbageCollectedFinalized<T>. See
76 [BlinkGCAPIReference.md](platform/heap/BlinkGCAPIReference.md) to learn 77 [BlinkGCAPIReference.md](../platform/heap/BlinkGCAPIReference.md) to learn
77 programming with Oilpan. 78 programming with Oilpan.
78 79
79 ```c++ 80 ```c++
80 class X : public GarbageCollected<X> { 81 class X : public GarbageCollected<X> {
81 ...; 82 ...;
82 }; 83 };
83 84
84 void func() { 85 void func() {
85 X* x = new X; // This is allocated by Oilpan. 86 X* x = new X; // This is allocated by Oilpan.
86 } 87 }
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 void func() { 177 void func() {
177 X x; // This is allowed. 178 X x; // This is allowed.
178 X* x = new X; // This is forbidden. 179 X* x = new X; // This is forbidden.
179 } 180 }
180 ``` 181 ```
181 182
182 Note that these macros are inherited. See a comment in wtf/Allocator.h 183 Note that these macros are inherited. See a comment in wtf/Allocator.h
183 for more details about the relationship between the macros and Oilpan. 184 for more details about the relationship between the macros and Oilpan.
184 185
185 If you have any question, ask oilpan-reviews@chromium.org. 186 If you have any question, ask oilpan-reviews@chromium.org.
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698