| 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 |