The document discusses object graphs in object-oriented programming and the problem of unused but referenced objects consuming memory. It proposes swapping unused object subgraphs to disk to free up memory while keeping them available. Key challenges include identifying unused object groups, serializing them efficiently with minimal overhead, and handling shared objects and pointers between swapped and unswapped objects. The approach taken is to mark used/unused objects at runtime, group related unused objects into subgraphs, swap only subgraph roots and inner objects to a file while keeping shared objects in memory, and update pointers to swapped objects.
8. Problem
Use more memory than needed.
Make OOP languages unsuitable for memory
limited devices.
Existence of unused but referenced objects.
3
Wednesday, September 15, 2010
9. The context
In OOP primary memory is represented by an object graph
A B C
D E F G H
Y
K
X
I LJ
Z
4
Wednesday, September 15, 2010
10. Garbage Collector
Only collects objects that nobody else points to.
A B C
D E F G H
Y
K
X
I LJ
Z
5
Wednesday, September 15, 2010
11. Garbage Collector
Only collects objects that nobody else points to.
A B C
D E F G H
Y
K
X
I LJ
Z
5
Wednesday, September 15, 2010
12. Garbage Collector
Only collects objects that nobody else points to.
A B C
D E F G H
Y
K
X
I LJ
Z
5
Wednesday, September 15, 2010
13. Garbage Collector
Only collects objects that nobody else points to.
A B C
D E F G H
Y
K
X
I LJ
Z
5
Wednesday, September 15, 2010
14. 6
But...what happens with referenced yet unused objects?
A B C
D E F G H
Y
K
X
I LJ
Z
Wednesday, September 15, 2010
15. Idea
Swap out (not remove) unused objects to
disk.
Automatically load them back when needed.
7
Wednesday, September 15, 2010
16. Related work
Large object oriented memory (LOOM).
Melt - Supporting memory leaks.
ImageSegments.
8
Wednesday, September 15, 2010
18. Main challenges
Not to use more memory than the one
released by swapping.
Low overhead penalty.
Group objects in an smart way.
10
Wednesday, September 15, 2010
19. Key aspects
Mark and trace unused/used objects at
runtime.
The usage of proxies.
Group unused objects (subgraphs).
11
Wednesday, September 15, 2010
20. Why we need to
group objects?
Because if we replace each object by a proxy,
we release little memory.
We want to replace a whole group by one or a
few proxies.
12
Wednesday, September 15, 2010
21. Why subgraphs?
Group of objects that are used (or not used)
together.
We need few proxies (for the roots) for
several objects.
13
Wednesday, September 15, 2010
22. Experiments done
Modify Smalltalk VM to mark and trace
objects usage.
Visualize objects and memory usage.
Take statistics from different scenarios.
14
Wednesday, September 15, 2010
24. Swapping steps and
challenges
1.Identify sets of objects and serialize them.
Problems: cycles, speed, etc.
2.Write the serialized objects into a file.
Problems: file format, encoding, speed, etc.
3. Load the objects from a file. Problems: class
reshape, avoid duplicates, speed, etc.
16
Wednesday, September 15, 2010
26. More
problems
Should shared objects be
included or not?
GC moves objects.
Pointers update.
Class changes.
Recreate and reinitialize
objects.
Code executed after
loading.
A
(Root)
B
(Root)
C
(Root)
D E F G H
Y
K
X
I LJ
Subgraph to process
Z
Roots Inner Shared External
18
Wednesday, September 15, 2010
28. ImageSegment basis
Only write/swap roots and inner objects.
Shared objects are NOT swapped.
Keep an array in memory for the shared
objects.
Update object pointers to point to a relative
address inside the arrays (offset).
Roots are replaced by proxies.
Uses GC facilities to detect shared objects.
Wednesday, September 15, 2010
29. Subgraph traverse
A CB
D E F G H
I J K L
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
30. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
31. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
32. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
33. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
34. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’
D
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
35. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’
D
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
36. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’
D
offset
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
37. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’ E’
D
offset
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
38. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’ E’
D
offset
offset
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
39. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’ E’
D
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
40. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’ E’
D
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
41. Subgraph traverse
A CB
D E F G H
I J K L
A’ B’ C’ E’
F GD J
I’ H’ L’
Serialized objects WordArray
Shared objects Array
Wednesday, September 15, 2010
42. A CB
D E F G H
I J K L
A’ B’ C’ E’
F GD J
I’ H’ L’
Serialized objects WordArray
Shared objects Array
Offset Memory address
Wednesday, September 15, 2010
43. A CB
D E F G H
I J K L
A’ B’ C’ E’ F GD JI’ H’ L’
Serialized objects WordArray Shared objects Array
anImageSegment
Wednesday, September 15, 2010
44. D E F G H
I J K L
A’ B’ C’ E’ F GD JI’ H’ L’
Serialized objects WordArray Shared objects Array
anImageSegment
P1 P3P2
Wednesday, September 15, 2010
45. D E F G H
I J K L
A’ B’ C’ E’ F GD JI’ H’ L’
Serialized objects WordArray Shared objects Array
anImageSegment
P1 P3P2
Wednesday, September 15, 2010
46. D F G
J K
A’ B’ C’ E’ F GD JI’ H’ L’
Serialized objects WordArray Shared objects Array
anImageSegment
P1 P3P2
Wednesday, September 15, 2010
47. CB
D F G
J K
A’ B’ C’ E’ I’ H’ L’
Serialized objects WordArray
F GD J
Shared objects Array
anImageSegment
P1 P3P2
Binary file
Wednesday, September 15, 2010
48. CB
D F G
J K
F GD J
Shared objects Array
anImageSegment
P1 P3P2
Binary file
A’ B’ C’ E’ I’ H’ L’
Wednesday, September 15, 2010
49. CB
D F G
J K
F GD J
Shared objects Array
anImageSegment
P1 P3P2
Binary file
A’ B’ C’ E’ I’ H’ L’
NIL
Wednesday, September 15, 2010
50. ImageSegment
conclusions
Good speed.
Graph traverse is done in VM side.
Good use of GC facilities.
You have to be aware of shared objects.
Bad granularity level.
Implicit needed information in object graphs.
Wednesday, September 15, 2010