OLD | NEW |
1 # Key Concepts in Chrome Memory | 1 # Key Concepts in Chrome Memory |
2 | 2 |
3 ## What's so hard about memory? Isn't it just malloc and free? | 3 ## What's so hard about memory? Isn't it just malloc and free? |
4 | 4 |
5 Not really. There are lots of differences and subtleties that change per | 5 Not really. There are lots of differences and subtleties that change per |
6 operating system and even per operating system configuration. | 6 operating system and even per operating system configuration. |
7 | 7 |
8 Fortunately, these differences mostly disappear when a program is running | 8 Fortunately, these differences mostly disappear when a program is running |
9 with sufficient resources. | 9 with sufficient resources. |
10 | 10 |
11 Unfortunately, the distinctions end up being very relevant when | 11 Unfortunately, the distinctions end up being very relevant when |
12 working near out of memory conditions or analyzing overall performance | 12 working near out of memory conditions or analyzing overall performance |
13 when there is any amount of memory pressure; this makes crafting and | 13 when there is any amount of memory pressure; this makes crafting and |
14 interpreting memory statistics hard. | 14 interpreting memory statistics hard. |
15 | 15 |
16 Fortunately, the point of this doc is to give succinct background that | 16 Fortunately, the point of this doc is to give succinct background that |
17 will help you ramp up on the subtleties to work in this space. Yes, this | 17 will help you ramp up on the subtleties to work in this space. Yes, this |
18 is complicated stuff...but don't despair. You work on a multi-process | 18 is complicated stuff...but don't despair. You work on a multi-process |
19 browser implementing the web platform with high security guarantees. | 19 browser implementing the web platform with high security guarantees. |
20 Compared to the rest the system, memory is not THAT complicated. | 20 Compared to the rest the system, memory is not THAT complicated. |
21 | 21 |
22 ## An you give specific examples of how it's harder than malloc/free? | 22 ## Can you give specific examples of how it's harder than malloc/free? |
23 | 23 |
24 Here are some example questions that require a more complex | 24 Here are some example questions that require a more complex |
25 view of memory than malloc/free. | 25 view of memory than malloc/free. |
26 | 26 |
27 * When Chrome allocates memory, when does it take up swap space? | 27 * When Chrome allocates memory, when does it take up swap space? |
28 * When memory is `free()`d, when is it made usable by other applications? | 28 * When memory is `free()`d, when is it made usable by other applications? |
29 * Is it always safe to touch the memory returned by malloc()? | 29 * Is it always safe to touch the memory returned by malloc()? |
30 * How many heaps does Chrome have? | 30 * How many heaps does Chrome have? |
31 * How are memory resources used by the GPU and drivers accounted for? | 31 * How are memory resources used by the GPU and drivers accounted for? |
32 * Is that the same on systems where GPU memory isn't shared with main memory? | 32 * Is that the same on systems where GPU memory isn't shared with main memory? |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
95 ### Commited Memory | 95 ### Commited Memory |
96 ### Discardable memory | 96 ### Discardable memory |
97 ### Proportional Set Size | 97 ### Proportional Set Size |
98 ### Image memory | 98 ### Image memory |
99 ### Shared Memory. | 99 ### Shared Memory. |
100 | 100 |
101 TODO(awong): Write overview of our platform diversity, windows vs \*nix memory m
odels (eg, | 101 TODO(awong): Write overview of our platform diversity, windows vs \*nix memory m
odels (eg, |
102 "committed" memory), what "discardable" memory is, GPU memory, zram, overcommit, | 102 "committed" memory), what "discardable" memory is, GPU memory, zram, overcommit, |
103 the various Chrome heaps (pageheap, partitionalloc, oilpan, v8, malloc...per | 103 the various Chrome heaps (pageheap, partitionalloc, oilpan, v8, malloc...per |
104 platform), etc. | 104 platform), etc. |
OLD | NEW |