memory management & garbage collection - skkuarcs.skku.edu/.../13-memorymanagement_gc.pdf ·...
TRANSCRIPT
![Page 1: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/1.jpg)
Programming Language & Compiler
Hwansoo Han
Memory Management & Garbage Collection
![Page 2: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/2.jpg)
Good Memory Management
2
Primary goals Good time performance for malloc and free
Ideally should take constant time (not always possible)
Should certainly not take linear time in the number of blocks
Good space utilization
User allocated structures should be large fraction of the heap.
Want to minimize “fragmentation”.
Some other goals Good locality properties
Structures allocated close in time should be close in space
“Similar” objects should be allocated close in space
Robust
Can check that free(p1) is on a valid allocated object p1
Can check that memory references are to allocated space
![Page 3: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/3.jpg)
Internal Fragmentation
3
Poor memory utilization caused by fragmentation. Comes in two forms: internal and external fragmentation
Internal fragmentation For some block, internal fragmentation is the difference between the
block size and the payload size.
Caused by overhead of maintaining heap data structures, padding for alignment purposes, or explicit policy decisions (e.g., not to split the block).
Depends only on the pattern of previous requests, and thus is easy to measure.
payloadInternal
fragmentation
block
Internal
fragmentation
![Page 4: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/4.jpg)
External Fragmentation
4
Occurs when there is enough aggregate heap memory, but no
single free block is large enough
oops!External fragmentation depends on the pattern of future requests, and
thus is difficult to measure.
p1 = malloc(4)
p2 = malloc(5)
p3 = malloc(6)
free(p2)
p4 = malloc(6)
![Page 5: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/5.jpg)
Knowing How Much to Free
5
Standard method
Keep the length of a block in the word preceding the block.
This word is often called the header field or header
Requires an extra word for every allocated block
free(p0)
p0 = malloc(4) p0
Block size data
5
![Page 6: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/6.jpg)
Keeping Track of Free Blocks
6
Method 1: Implicit list using lengths -- links all blocks
Method 2: Explicit list among the free blocks using pointers within the free blocks
Method 3: Segregated free list
Different free lists for different size classes
5 4 26
5 4 26
![Page 7: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/7.jpg)
Method 1: Implicit List
7
Need to identify whether each block is free or allocated
Can use extra bit
Bit can be put in the same word as the size if block sizes are always
multiples of 2
Mask out low order bit when reading size
If you aligned on 8 bytes, mask out low order 3 bits
size
1 word
Format of
allocated and
free blockspayload
a = 1: allocated block
a = 0: free block
size: block size (in bytes)
payload: application data
(allocated blocks only)
a
optional
padding
![Page 8: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/8.jpg)
Implicit List: Finding a Free Block
8
First fit: Search list from beginning, choose first free block that fits
Can take linear time in total number of blocks (allocated and free)
In practice it can cause “splinters” at beginning of list
Next fit: Like first-fit, but search list from location of end of previous search
Best fit: Search the list, choose the free block with the closest size that fits
Keeps fragments small --- usually helps avoid fragmentation
Will typically run slower than first-fit
![Page 9: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/9.jpg)
Implicit List: Allocating & Freeing
9
Allocating in a free block – splitting if needed
4 4 26
p
4 24 24
4 4 24 2
malloc(5)Oops!
free(p)
P = malloc(3)
![Page 10: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/10.jpg)
Implicit List: Coalescing
10
Join (coalesce) with next and/or previous block if they are free
Coalescing with previous free block?
4 24 2
free(p) p
4 4 2
4
6
![Page 11: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/11.jpg)
Implicit List: Bidirectional Coalescing
11
Boundary tags [Knuth73]
Replicate size/allocated word at bottom of free blocks
Allows us to traverse the “list” backwards, but requires extra space
Important and general technique!
size
1 word
Format of
allocated and
free blocks
payload and
padding
a = 1: allocated block
a = 0: free block
size: total block size
payload: application data
(allocated blocks only)
a
size aBoundary tag
(footer)
4 4 4 4 6 46 4
Header
![Page 12: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/12.jpg)
Keeping Track of Free Blocks
12
Method 1: Implicit list using lengths -- links all blocks
Method 2: Explicit list among the free blocks using pointers within the free blocks
Method 3: Segregated free lists
Different free lists for different size classes
5 4 26
5 4 26
![Page 13: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/13.jpg)
Explicit Free Lists
13
Use data space for link pointers Typically doubly linked
Still need boundary tags for coalescing
It is important to realize that links are not necessarily in the same order as the blocks
A B C
4 4 4 4 66 44 4 4
Forward links
Back links
A B
C
![Page 14: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/14.jpg)
Allocating From Explicit Free Lists
14
free block
pred succ
free block
pred succ
Before:
After:
(with splitting)
![Page 15: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/15.jpg)
Freeing With Explicit Free Lists
15
Insertion policy:Where in the free list do you put a newly freed
block?
LIFO (last-in-first-out) policy
Insert freed block at the beginning of the free list
Pro: simple and constant time
Con: studies suggest fragmentation is worse than address ordered.
Address-ordered policy
Insert freed blocks so that free list blocks are always in address order
‒ i.e. addr(pred) < addr(curr) < addr(succ)
Con: requires search
Pro: studies suggest fragmentation is better than LIFO
![Page 16: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/16.jpg)
Keeping Track of Free Blocks
16
Method 1: Implicit list using lengths -- links all blocks
Method 2: Explicit list among the free blocks using pointers within the free blocks
Method 3: Segregated free lists
Different free lists for different size classes
5 4 26
5 4 26
![Page 17: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/17.jpg)
Segregated Storage
17
Each size class has its own collection of blocks
General principles
Often have separate size class for every small size (2,3,4,…)
For larger sizes typically have a size class for each power of 2
128 size classes for Doug Lea’s malloc.c
63 exact bins (spaced by 8 byte) : 16,24,32,…,512
64 sorted bins (approx. logarithmically spaced) : 576, 640, … 231
1-2
3
4
5-8
9-16
![Page 18: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/18.jpg)
Segregated Fits
18
Array of free lists, each one for some size class
To allocate a block of size n:
Search appropriate free list for block of size m > n
If an appropriate block is found:
Split block and place fragment on appropriate list (optional)
If no block is found, try next larger class
Repeat until block is found
To free a block:
Coalesce and place on appropriate list (optional)
Tradeoffs
Faster search than sequential fits
Controls fragmentation of simple segregated storage
Coalescing can increase search times
Deferred coalescing can help
![Page 19: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/19.jpg)
GC - Automated Free for Heap Objects
Garbage collection
Automatically reclaim the space that the running program
can never access again
Performed by the runtime system
Two parts of a garbage collector
Garbage detection
Reclamation of the garbage objects’ storage
19
![Page 20: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/20.jpg)
Liveness in GC
A root set
Global variables
Local variables in the activation stack
Any registers used by active procedures
Live objects
Objects on any directed path of pointers from the roots
20
![Page 21: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/21.jpg)
Basic Garbage Collection Techniques
Assumption – heap objects are self-identifying
Basic techniques for GC
Reference counting
Mark-Sweep collection
Mark-Compact collection
Copying collection
21
![Page 22: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/22.jpg)
Reference Counting
Keeping track of how many pointers point to each record
Heap Space
1 1
2
1
1 1
1 2 1
root set
22
![Page 23: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/23.jpg)
Reference Counting - problems
Cost of reference counting
Too many ref-count increments and decrements
Fail to reclaim circular structures
Not always effective
Heap Space
1 1
1
1
1 1
1 2 1
root set
x
23
![Page 24: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/24.jpg)
Mark-Sweep Collection
Garbage detection Traverse the graph of pointer relationships and
Mark all reachable objects
Reclamation Sweep unmarked objects
Problems Fragmentation
Collection cost - proportional to the size of heap
Poor locality of reference
24
![Page 25: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/25.jpg)
Mark-Compact Collection
The same detection phase by marking
Objects are compacted Moving most of the live objects until all of the live objects are
contiguous
Pros No fragmentation problem
Allocation order preserved
Cons Slower than mark-sweep
Need fast compacting algorithms
25
![Page 26: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/26.jpg)
Copying Collection
Move the live objects to a contiguous area
Integrate the traversal of the data and the copying process
A simple copying collector
“Stop-and-Copy” using semi-spaces
26
![Page 27: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/27.jpg)
“Stop-and-Copy” Using Semi-Spaces
Subdivided heap into two contiguous semi-spaces
When program demands more unused area of the
current semi-space
Stop and copy to reclaim space
Cheney’s algorithm:breadth-first search to
traverse the reachable data
27
![Page 28: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/28.jpg)
Incremental Tracing Collection
Interleave GC with program execution
Small units of garbage collection interleaved with small units
of program execution
Needed for real-time applications
Difficulty
While the collector is tracing out the graph of reachable
objects, the graph may change by the running program
Mark-sweep or copying GC can be made incremental
Tricolor marking
28
![Page 29: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/29.jpg)
Tricolor Marking
Live objects’ color becomes white, grey, and then black
Collection ends when there are no grey objects
All white objects are garbage
Need to coordinate the collector with the “mutator”
Invariant - No black object points to a white object
Black objects have been visited, and their
children also visited
Grey objects have been visited, but their children
have not yet
White objects are not yet visited Before After
29
![Page 30: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/30.jpg)
Infant Mortality
Most objects die young
Marking entire heap space is time-consuming
lifetime
surv
ived
(b
yte
s)
30
![Page 31: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/31.jpg)
Generational Collection
Most objects live a very short time, while a small
percentage of them live much longer
When using copying collection, need to avoid much
repeated copying of old objects
Divide the heap into generations
The younger generation is typically several times smaller
than the old one
Younger generations are collected more often
31
![Page 32: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/32.jpg)
vir
tua
l
vir
tual
vir
tua
l
Arrangement of generations
Young generation (nursery)
Eden + two survivor spaces
Tenured generation
Permanent generation
Code area used by JVM - class and method objects
32
Generational Collection in J2SE
![Page 33: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/33.jpg)
Move objects to old space when they become tenured
Default GC in J2SE
Minor GC: copying
Full GC:
Mark-compact
New Object
Garbage
Live Object
SS2SS1
33
Copy live objects to survivor space
(tenured) (tenured)
(tenured)
![Page 34: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/34.jpg)
GC Algorithms in J2SE 1.4.1+
Young generation
Copying collector
Parallel collector (2P+)
34
Old generation Mark-compact collector
Concurrent Mark-Sweep
collector (2P+)
![Page 35: Memory Management & Garbage Collection - SKKUarcs.skku.edu/.../13-MemoryManagement_GC.pdf · 2019-12-11 · Memory Management & Garbage Collection. Good Memory Management 2 ... Two](https://reader036.vdocuments.us/reader036/viewer/2022070718/5ede4611ad6a402d66699888/html5/thumbnails/35.jpg)
Summary
35
Memory allocation
First fit, next fit, best fit, segregated fit
Free list management
Implicit list, explicit list, segregated list
Coalescing with boundary tags
Garbage collection
Reference counting
Mark-sweep, mark-compact, copying-collection
Stop-the-world vs. incremental GC
Generational GC
Concurrent GC