$ od -c -N 50000 [Erinyes]<LispManual>GarbageCollection.im!5
0000000 \r \r { B e g i n S u b S e c
0000020 S t o r a g e A l l o c a t i
0000040 o n a n d G a r b a g e C
0000060 o l l e c t i o n } \r { T i t l
0000100 e S t o r a g e A l l o c a
0000120 t i o n a n d G a r b a g e
0000140 C o l l e c t i o n } \r { T e
0000160 x t \r \r { i n d e x F r a g m
0000200 e n t a t i o n o f d a t a
0000220 s p a c e } \r { i n d e x D
0000240 a t a f r a g m e n t a t i o
0000260 n } \r { i n d e x W o r k i n
0000300 g s e t } \r { i n d e x G a
0000320 r b a g e c o l l e c t i o n
0000340 } \r { i n d e x S t o r a g e
0000360 a l l o c a t i o n } \r \r A s
0000400 a n I n t e r l i s p - D
0000420 a p p l i c a t i o n s p r o
0000440 g r a m r u n s , i t c r
0000460 e a t e s d a t a s t r u c
0000500 t u r e s ( a l l o c a t e d
0000520 o u t o f f r e e s t o
0000540 r a g e s p a c e ) , m a n
0000560 i p u l a t e s t h e m , a
0000600 n d t h e n d i s c a r d s
0000620 t h e m . I f t h e r e
0000640 w e r e n o w a y o f
0000660 r e c l a i m i n g t h i s
0000700 s p a c e , o v e r t i m e
0000720 t h e I n t e r l i s p - D
0000740 m e m o r y ( b o t h t h
0000760 e p h y s i c a l m e m o r
0001000 y i n t h e m a c h i n e
0001020 a n d t h e v i r t u a l
0001040 m e m o r y s t o r e d o
0001060 n t h e d i s k ) w o u l
0001100 d f i l l u p , a n d t
0001120 h e c o m p u t a t i o n w
0001140 o u l d c o m e t o a h
0001160 a l t . A c t u a l l y ,
0001200 l o n g b e f o r e t h i s
0001220 c o u l d h a p p e n t h
0001240 e s y s t e m w o u l d p
0001260 r o b a b l y b e c o m e i
0001300 n t o l e r a b l y s l o w ,
0001320 d u e t o " d a t a f r
0001340 a g m e n t a t i o n , " w h
0001360 i c h o c c u r s w h e n
0001400 t h e d a t a c u r r e n t
0001420 l y i n u s e a r e s p
0001440 r e a d o v e r m a n y v
0001460 i r t u a l m e m o r y p a
0001500 g e s , s o t h a t m o s
0001520 t o f t h e c o m p u t e
0001540 r t i m e m u s t b e s
0001560 p e n t s w a p p i n g d i
0001600 s k p a g e s i n t o p h
0001620 y s i c a l m e m o r y .
0001640 T h e p r o b l e m o f f
0001660 r a g m e n t a t i o n w i l
0001700 l o c c u r i n a n y s
0001720 i t u a t i o n w h e r e t
0001740 h e v i r t u a l m e m o r
0001760 y i s s i g n i f i c a n t
0002000 l y l a r g e r t h a n t
0002020 h e r e a l p h y s i c a l
0002040 m e m o r y . T o r e d u
0002060 c e s w a p p i n g , i t
0002100 i s d e s i r a b l e t o
0002120 k e e p t h e " w o r k i n
0002140 g s e t " ( t h e s e t
0002160 o f p a g e s c o n t a i n
0002200 i n g a c t i v e l y r e f
0002220 e r e n c e d d a t a ) a s
0002240 s m a l l a s p o s s i b
0002260 l e . \r \r { i n d e x M a r k
0002300 - a n d - s w e e p g a r b a
0002320 g e c o l l e c t i o n } \r \r
0002340 I t i s p o s s i b l e t
0002360 o w r i t e p r o g r a m s
0002400 t h a t d o n ' t g e n e
0002420 r a t e m u c h " g a r b a
0002440 g e " d a t a , o r w h i
0002460 c h r e c y c l e d a t a ,
0002500 b u t s u c h p r o g r a
0002520 m s t e n d t o b e o v
0002540 e r l y c o m p l i c a t e d
0002560 a n d d i f f i c u l t t
0002600 o d e b u g . S p e n d i
0002620 n g e f f o r t w r i t i n
0002640 g s u c h p r o g r a m s
0002660 d e f e a t s t h e w h o l
0002700 e p o i n t o f u s i n g
0002720 a s y s t e m w i t h a
0002740 u t o m a t i c s t o r a g e
0002760 a l l o c a t i o n . A n
0003000 i m p o r t a n t p a r t
0003020 o f a n y L i s p i m p l
0003040 e m e n t a t i o n i s t h
0003060 e " g a r b a g e c o l l e
0003100 c t o r " w h i c h i d e n
0003120 t i f i e s d i s c a r d e d
0003140 d a t a a n d r e c l a i
0003160 m s i t s s p a c e . T
0003200 h e r e a r e s e v e r a l
0003220 w e l l - k n o w n a p p r
0003240 o a c h e s t o g a r b a g
0003260 e c o l l e c t i o n . O
0003300 n e m e t h o d i s t h e
0003320 t r a d i t i o n a l m a r
0003340 k - a n d - s w e e p g a r b
0003360 a g e c o l l e c t i o n a
0003400 l g o r i t h m , w h i c h
0003420 i d e n t i f i e s " g a r b
0003440 a g e " d a t a b y m a r
0003460 k i n g a l l a c c e s s i
0003500 b l e d a t a s t r u c t u
0003520 r e s , a n d t h e n s w
0003540 e e p i n g t h r o u g h t
0003560 h e d a t a s p a c e s t
0003600 o f i n d a l l u n m a r
0003620 k e d o b j e c t s ( i . e
0003640 . , n o t r e f e r e n c e
0003660 d b y a n y o t h e r o
0003700 b j e c t ) . A l t h o u
0003720 g h t h i s m e t h o d i
0003740 s g u a r a n t e e d t o
0003760 r e c l a i m a l l g a r b
0004000 a g e , i t t a k e s t i
0004020 m e p r o p o r t i o n a l
0004040 t o t h e n u m b e r o f
0004060 a l l o c a t e d o b j e c
0004100 t s , w h i c h m a y b e
0004120 v e r y l a r g e . ( S
0004140 o m e a l l o c a t e d o b
0004160 j e c t s w i l l h a v e
0004200 b e e n m a r k e d d u r i
0004220 n g t h e " m a r k " p h
0004240 a s e , a n d t h e r e m
0004260 a i n d e r w i l l b e c
0004300 o l l e c t e d d u r i n g
0004320 t h e " s w e e p " p h a s
0004340 e ; s o a l l w i l l h
0004360 a v e t o b e t o u c h e
0004400 d i n s o m e w a y . )
0004420 A l s o , t h e t i m e
0004440 t h a t a m a r k - a n d -
0004460 s w e e p g a r b a g e c o
0004500 l l e c t i o n t a k e s i
0004520 s i n d e p e n d e n t o f
0004540 t h e a m o u n t o f g
0004560 a r b a g e c o l l e c t e d
0004600 ; i t i s p o s s i b l e
0004620 t o s w e e p t h r o u g
0004640 h t h e w h o l e v i r t
0004660 u a l m e m o r y , a n d
0004700 o n l y r e c o v e r a s
0004720 m a l l a m o u n t o f g
0004740 a r b a g e . \r \r { i n d e x
0004760 R e f e r e n c e - c o u n t i
0005000 n g g a r b a g e c o l l e
0005020 c t i o n } \r \r F o r i n t e
0005040 r a c t i v e a p p l i c a t
0005060 i o n s , i t i s n o t
0005100 a c c e p t a b l e t o h a
0005120 v e l o n g i n t e r r u p
0005140 t i o n s i n a c o m p u
0005160 t a t i o n f o r t h e p
0005200 u r p o s e o f g a r b a g
0005220 e c o l l e c t i o n . I
0005240 n t e r l i s p - D s o l v e
0005260 s t h i s p r o b l e m b
0005300 y u s i n g a r e f e r e
0005320 n c e - c o u n t i n g g a r
0005340 b a g e c o l l e c t o r .
0005360 W i t h t h i s s c h e m
0005400 e , t h e r e i s a t a
0005420 b l e c o n t a i n i n g c
0005440 o u n t s o f h o w m a n
0005460 y t i m e s e a c h o b j
0005500 e c t i s r e f e r e n c e
0005520 d . T h i s t a b l e i
0005540 s i n c r e m e n t a l l y
0005560 u p d a t e d a s p o i n t
0005600 e r s a r e c r e a t e d
0005620 a n d d i s c a r d e d , i
0005640 n c u r r i n g a s m a l l
0005660 o v e r h e a d d i s t r i
0005700 b u t e d o v e r t h e c
0005720 o m p u t a t i o n a s a
0005740 w h o l e . ( N o t e : R
0005760 e f e r e n c e s f r o m t
0006000 h e s t a c k a r e n o t
0006020 c o u n t e d , b u t a r
0006040 e h a n d l e d s e p a r a
0006060 t e l y a t " s w e e p "
0006100 t i m e ; t h u s t h e v
0006120 a s t m a j o r i t y o f
0006140 d a t a m a n i p u l a t i o
0006160 n s d o n o t c a u s e
0006200 u p d a t e s t o t h i s
0006220 t a b l e . ) A t o p p o
0006240 r t u n e m o m e n t s , t
0006260 h e g a r b a g e c o l l e
0006300 c t o r s c a n s t h i s
0006320 t a b l e , a n d r e c l a
0006340 i m s a l l o b j e c t s
0006360 t h a t a r e n o l o n g
0006400 e r a c c e s s i b l e ( h
0006420 a v e a r e f e r e n c e
0006440 c o u n t o f z e r o ) .
0006460 T h e p a u s e w h i l e
0006500 o b j e c t s a r e r e c
0006520 l a i m e d i s o n l y t
0006540 h e t i m e f o r s c a n
0006560 n i n g t h e r e f e r e n
0006600 c e c o u n t t a b l e s
0006620 ( s m a l l ) p l u s t i m
0006640 e p r o p o r t i o n a l t
0006660 o t h e a m o u n t o f
0006700 g a r b a g e t h a t h a s
0006720 t o b e c o l l e c t e d
0006740 ( t y p i c a l l y l e s s
0006760 t h a n a s e c o n d ) .
0007000 " O p p o r t u n e " t i
0007020 m e s o c c u r w h e n a
0007040 c e r t a i n n u m b e r
0007060 o f c e l l s h a v e b e
0007100 e n a l l o c a t e d o r
0007120 w h e n t h e s y s t e m
0007140 h a s b e e n w a i t i n g
0007160 f o r t h e u s e r t o
0007200 t y p e s o m e t h i n g
0007220 f o r l o n g e n o u g h .
0007240 T h e f r e q u e n c y
0007260 o f g a r b a g e c o l l e
0007300 c t i o n i s c o n t r o l
0007320 l e d b y t h e f u n c t
0007340 i o n s a n d v a r i a b l
0007360 e s d e s c r i b e d b e l
0007400 o w . F o r t h e b e s
0007420 t s y s t e m p e r f o r m
0007440 a n c e , i t i s d e s i
0007460 r a b l e t o a d j u s t
0007500 t h e s e p a r a m e t e r s
0007520 f o r f r e q u e n t , s
0007540 h o r t g a r b a g e c o l
0007560 l e c t i o n s , w h i c h
0007600 w i l l n o t i n t e r r u
0007620 p t i n t e r a c t i v e a
0007640 p p l i c a t i o n s f o r
0007660 v e r y l o n g , a n d w
0007700 h i c h w i l l h a v e t
0007720 h e a d d e d b e n e f i t
0007740 o f r e d u c i n g d a t
0007760 a f r a g m e n t a t i o n ,
0010000 k e e p i n g t h e w o r
0010020 k i n g s e t s m a l l . \r
0010040 \r O n e p r o b l e m w i t
0010060 h t h e I n t e r l i s p -
0010100 D g a r b a g e c o l l e c
0010120 t o r i s t h a t n o t
0010140 a l l g a r b a g e i s g
0010160 u a r a n t e e d t o b e
0010200 c o l l e c t e d . C i r c
0010220 u l a r d a t a s t r u c t
0010240 u r e s , w h i c h p o i n
0010260 t t o t h e m s e l v e s
0010300 d i r e c t l y o r i n d i
0010320 r e c t l y , a r e n e v e
0010340 r r e c l a i m e d , s i n
0010360 c e t h e i r r e f e r e n
0010400 c e c o u n t s a r e a l
0010420 w a y s a t l e a s t o n
0010440 e . W i t h t i m e , t
0010460 h i s u n r e c l a i m a b l
0010500 e g a r b a g e m a y i n
0010520 c r e a s e t h e w o r k i
0010540 n g s e t t o u n a c c e
0010560 p t a b l e l e v e l s .
0010600 S o m e u s e r s h a v e
0010620 w o r k e d w i t h t h e
0010640 s a m e I n t e r l i s p - D
0010660 v i r t u a l m e m o r y
0010700 f o r a v e r y l o n g
0010720 t i m e , b u t i t i s
0010740 a g o o d i d e a t o o
0010760 c c a s i o n a l l y s a v e
0011000 a l l o f y o u r f u n
0011020 c t i o n s i n f i l e s ,
0011040 r e i n i t i a l i z e I n
0011060 t e r l i s p - D , a n d r
0011100 e b u i l d y o u r s y s t
0011120 e m . M a n y u s e r s
0011140 e n d t h e i r w o r k i n
0011160 g d a y b y i s s u i n g
0011200 a c o m m a n d t o r e
0011220 b u i l d t h e i r s y s t
0011240 e m a n d t h e n l e a v
0011260 i n g t h e m a c h i n e
0011300 t o p e r f o r m t h i s
0011320 t a s k i n t h e i r a b
0011340 s e n c e . I f t h e s
0011360 y s t e m s e e m s t o b
0011400 e s p e n d i n g t o o m
0011420 u c h t i m e s w a p p i n
0011440 g ( a n i n d i c a t i o n
0011460 o f f r a g m e n t e d w
0011500 o r k i n g s e t ) , t h i
0011520 s p r o c e d u r e i s d
0011540 e f i n i t e l y r e c o m m
0011560 e n d e d . \r \r \r G a r b a g e
0011600 c o l l e c t i o n i n I
0011620 n t e r l i s p - D i s c o
0011640 n t r o l l e d b y t h e
0011660 f o l l o w i n g f u n c t i
0011700 o n s a n d v a r i a b l e
0011720 s : \r \r \r { F n D e f { N a m
0011740 e R E C L A I M } { A r g s
0011760 } \r { T e x t \r I n i t i a t e
0012000 s a g a r b a g e c o l l
0012020 e c t i o n . R e t u r n s
0012040 0 . \r } } \r \r \r { F n D e f
0012060 { N a m e R E C L A I M M I N
0012100 } { A r g s N } \r { T e x t
0012120 \r S e t s t h e f r e q u e
0012140 n c y o f g a r b a g e c
0012160 o l l e c t i o n . I n t e
0012200 r l i s p k e e p s t r a c
0012220 k o f t h e n u m b e r
0012240 o f c e l l s o f a n y
0012260 t y p e t h a t h a v e b
0012300 e e n a l l o c a t e d ; w
0012320 h e n i t r e a c h e s a
0012340 g i v e n n u m b e r , a
0012360 g a r b a g e c o l l e c t
0012400 i o n o c c u r s . I f
0012420 { a r g N } i s n o n - {
0012440 l i s p N I L } , t h i s
0012460 n u m b e r i s s e t t o
0012500 { a r g N } . R e t u r
0012520 n s t h e c u r r e n t s
0012540 e t t i n g o f t h e n u
0012560 m b e r . \r } } \r \r \r { V a r D
0012600 e f { N a m e R E C L A I M
0012620 W A I T } \r { T e x t \r I n t e
0012640 r l i s p - D w i l l i n v
0012660 o k e a { f n R E C L A I
0012700 M } i f t h e s y s t e m
0012720 i s i d l e a n d w a i
0012740 t i n g f o r u s e r i n
0012760 p u t f o r { v a r R E C
0013000 L A I M W A I T } s e c o n d
0013020 s ( c u r r e n t l y s e t
0013040 f o r 4 s e c o n d s ) .
0013060 \r } } \r \r \r { F n D e f { N a
0013100 m e G C G A G } { A r g s
0013120 M E S S A G E } \r { T e x t \r S
0013140 e t s t h e b e h a v i o r
0013160 t h a t o c c u r s w h i
0013200 l e a g a r b a g e c o l
0013220 l e c t i o n i s t a k i n
0013240 g p l a c e . I f { a r
0013260 g M E S S A G E } i s n o
0013300 n - { l i s p N I L } , t h
0013320 e c u r s o r i s c o m p
0013340 l e m e n t e d d u r i n g
0013360 a { f n R E C L A I M } ;
0013400 i f { a r g M E S S A G E }
0013420 = { l i s p N I L } , n o t
0013440 h i n g h a p p e n s . T
0013460 h e v a l u e o f { f n
0013500 G C G A G } i s i t s p r
0013520 e v i o u s s e t t i n g . \r
0013540 } } \r \r \r { F n D e f { N a
0013560 m e G C T R P } { A r g s }
0013600 \r { T e x t \r R e t u r n s t
0013620 h e n u m b e r o f c e l
0013640 l s u n t i l t h e n e x
0013660 t g a r b a g e c o l l e c
0013700 t i o n , a c c o r d i n g
0013720 t o t h e { f n R E C L A
0013740 I M M I N } n u m b e r . \r }
0013760 } \r \r \r T h e a m o u n t o
0014000 f s t o r a g e a l l o c a
0014020 t e d t o d i f f e r e n t
0014040 d a t a t y p e s , h o w
0014060 m u c h o f t h a t s t
0014100 o r a g e i s i n u s e ,
0014120 a n d t h e a m o u n t
0014140 o f d a t a f r a g m e n t
0014160 a t i o n c a n b e d e t
0014200 e r m i n e d u s i n g t h
0014220 e f o l l o w i n g f u n c
0014240 t i o n : \r \r \r { F n D e f {
0014260 F n N a m e S T O R A G E }
0014300 { F n A r g s T Y P E S P A
0014320 G E T H R E S H O L D } \r { T e
0014340 x t \r { f n S T O R A G E }
0014360 p r i n t s o u t a s u m
0014400 m a r y , f o r e a c h d
0014420 a t a t y p e , o f t h e
0014440 a m o u n t o f s p a c e
0014460 a l l o c a t e d t o t h
0014500 e d a t a t y p e , a n d
0014520 h o w m u c h o f t h a
0014540 t s p a c e i s c u r r e
0014560 n t l y i n u s e . I f
0014600 { a r g T Y P E S } i s
0014620 n o n - { l i s p N I L } ,
0014640 { f n S T O R A G E } o n l
0014660 y l i s t s s t a t i s t i
0014700 c s f o r t h e s p e c i
0014720 f i e d t y p e s . { a r
0014740 g T Y P E S } c a n b e
0014760 a l i t a t o m o r a l
0015000 i s t o f t y p e s . I
0015020 f { a r g P A G E T H R E S
0015040 H O L D } i s n o n - { l i
0015060 s p N I L } , t h e n { f
0015100 n S T O R A G E } o n l y
0015120 l i s t s s t a t i s t i c s
0015140 f o r t y p e s t h a t
0015160 h a v e a t l e a s t { a
0015200 r g P A G E T H R E S H O L D
0015220 } p a g e s a l l o c a t e
0015240 d t o t h e m . \r \r { f n
0015260 S T O R A G E } p r i n t s
0015300 o u t a t a b l e w i t h
0015320 t h e c o l u m n h e a d
0015340 i n g s { l i s p T y p e }
0015360 , { l i s p A s s i g n e d
0015400 } , { l i s p F r e e I t
0015420 e m s } , { l i s p I n u
0015440 s e } , a n d { l i s p T
0015460 o t a l a l l o c } . { l
0015500 i s p T y p e } i s t h e
0015520 n a m e o f t h e d a t
0015540 a t y p e . { l i s p A
0015560 s s i g n e d } i s h o w
0015600 m u c h o f y o u r v i r
0015620 t u a l m e m o r y i s s
0015640 e t a s i d e f o r i t e
0015660 m s o f t h i s t y p e .
0015700 C u r r e n t l y , m e m
0015720 o r y i s a l l o c a t e d
0015740 i n q u a n t a o f t w
0015760 o p a g e s ( 1 0 2 4 b y
0016000 t e s ) . T h e n u m b e
0016020 r s u n d e r { l i s p A
0016040 s s i g n e d } s h o w t h
0016060 e n u m b e r o f p a g e
0016100 s a n d t h e t o t a l
0016120 n u m b e r o f i t e m s
0016140 t h a t f i t o n t h o s
0016160 e p a g e s . { l i s p
0016200 F r e e I t e m s } s h o w
0016220 s h o w m a n y i t e m s
0016240 a r e a v a i l a b l e t
0016260 o b e a l l o c a t e d (
0016300 u s i n g t h e { l i s p
0016320 c r e a t e } c o n s t r u c
0016340 t , { P a g e R e f ( R e c
0016360 o r d O p e r a t o r ) C R
0016400 E A T E } ) ; t h e s e c o
0016420 n s t i t u t e t h e " f r
0016440 e e l i s t " f o r t h a
0016460 t d a t a t y p e . { l
0016500 i s p I n u s e } s h o w
0016520 s h o w m a n y i t e m s
0016540 o f t h i s t y p e a r
0016560 e c u r r e n t l y i n u
0016600 s e , i . e . , h a v e p
0016620 o i n t e r s t o t h e m
0016640 a n d h e n c e h a v e n
0016660 o t b e e n g a r b a g e
0016700 c o l l e c t e d . I f t
0016720 h i s n u m b e r i s h i
0016740 g h e r t h a n y o u r p
0016760 r o g r a m s e e m s t o
0017000 w a r r a n t , y o u m a y
0017020 w a n t t o l o o k f o
0017040 r s t o r a g e l e a k s .
0017060 T h e s u m o f { l i
0017100 s p F r e e I t e m s } a
0017120 n d { l i s p I n u s e }
0017140 i s a l w a y s t h e s
0017160 a m e a s t h e t o t a l
0017200 { l i s p A s s i g n e d }
0017220 i t e m s . { l i s p T
0017240 o t a l a l l o c } i s t
0017260 h e t o t a l n u m b e r
0017300 o f i t e m s o f t h i s
0017320 t y p e t h a t h a v e
0017340 e v e r b e e n a l l o c a
0017360 t e d ( s e e { f n B O X
0017400 C O U N T } , { P a g e R e f
0017420 F n B O X C O U N T } ) . \r
0017440 \r N o t e : T h e i n f o r
0017460 m a t i o n a b o u t t h e
0017500 n u m b e r o f i t e m s
0017520 o f t y p e { l i s p L
0017540 I S T P } i s o n l y a p
0017560 p r o x i m a t e , b e c a u
0017600 s e l i s t c e l l s a r
0017620 e a l l o c a t e d i n a
0017640 s p e c i a l w a y t h a
0017660 t p r e c l u d e s e a s y
0017700 c o m p u t a t i o n o f
0017720 t h e n u m b e r o f i t
0017740 e m s p e r p a g e . \r \r N
0017760 o t e : W h e n a d a t
0020000 a t y p e i s r e d e c l
0020020 a r e d , t h e d a t a t
0020040 y p e n a m e i s r e a s
0020060 s i g n e d . P a g e s w
0020100 h i c h w e r e a s s i g n
0020120 e d t o i n s t a n c e s
0020140 o f t h e o l d d a t a
0020160 t y p e a r e l a b e l e d
0020200 { i n d e x * * D E A L L O
0020220 C * * ( D a t a T y p e N
0020240 a m e ) } { l i s p * * D E A
0020260 L L O C * * } . \r \r A t t h e
0020300 e n d o f t h e t a b l
0020320 e p r i n t o u t , { f n
0020340 S T O R A G E } p r i n t s
0020360 a " D a t a S p a c e s S
0020400 u m m a r y " l i s t i n g
0020420 t h e n u m b e r o f p a
0020440 g e s a l l o c a t e d t o
0020460 t h e m a j o r d a t a
0020500 a r e a s i n t h e v i r
0020520 t u a l a d d r e s s s p a
0020540 c e : t h e s p a c e f o
0020560 r f i x e d - l e n g t h i
0020600 t e m s ( i n c l u d i n g
0020620 d a t a t y p e s ) , t h e
0020640 s p a c e f o r v a r i a b
0020660 l e - l e n g t h i t e m s ,
0020700 a n d t h e s p a c e f
0020720 o r l i t a t o m s . V a
0020740 r i a b l e - l e n g t h d a
0020760 t a t y p e s s u c h a s
0021000 a r r a y s h a v e f i x
0021020 e d - l e n g t h " h e a d e
0021040 r s , " w h i c h i s w h
0021060 y t h e y a l s o a p p e
0021100 a r i n t h e p r i n t o
0021120 u t o f f i x e d - l e n g
0021140 t h d a t a t y p e s .
0021160 T h u s , t h e l i n e p
0021200 r i n t e d f o r t h e {
0021220 l i s p B I T M A P } d a t
0021240 a t y p e s a y s h o w
0021260 m a n y b i t m a p s h a v
0021300 e b e e n a l l o c a t e d
0021320 , b u t t h e " a s s i g
0021340 n e d p a g e s " c o l u m
0021360 n c o u n t s o n l y t h
0021400 e h e a d e r s , n o t t
0021420 h e s p a c e u s e d b y
0021440 t h e v a r i a b l e - l e
0021460 n g t h p a r t o f t h e
0021500 b i t m a p . T h i s s
0021520 u m m a r y a l s o l i s t
0021540 s " R e m a i n i n g P a g
0021560 e s " i n r e l a t i o n
0021600 t o t h e l a r g e s t p
0021620 o s s i b l e v i r t u a l
0021640 m e m o r y , n o t t h e
0021660 s i z e o f t h e v i r t
0021700 u a l m e m o r y b a c k i
0021720 n g f i l e i n u s e .
0021740 T h i s f i l e m a y f
0021760 i l l u p , c a u s i n g
0022000 a { l i s p S T O R A G E
0022020 F U L L } e r r o r , l o n
0022040 g b e f o r e t h e " R e
0022060 m a i n i n g P a g e s " n
0022100 u m b e r s r e a c h z e r
0022120 o . \r \r \r { f n S T O R A G E
0022140 } a l s o p r i n t s o u
0022160 t i n f o r m a t i o n a b
0022200 o u t t h e s i z e s o f
0022220 t h e e n t r i e s o n
0022240 t h e v a r i a b l e - l e n
0022260 g t h d a t a f r e e l i
0022300 s t . T h e b l o c k s
0022320 i z e s a r e b r o k e n
0022340 d o w n b y t h e v a l u
0022360 e o f t h e v a r i a b l
0022400 e { v a r S T O R A G E . A
0022420 R R A Y S I Z E S } , { i n d e
0022440 x S T O R A G E . A R R A Y S
0022460 I Z E S V a r } i n i t i a
0022500 l l y { l i s p ( 4 1 6
0022520 6 4 2 5 6 1 0 2 4 4 0 9 6
0022540 1 6 3 8 4 N I L ) } , w h
0022560 i c h y i e l d s a p r i
0022600 n t o u t o f t h e f o r
0022620 m : \r \r { l i s p c o d e \r v
0022640 a r i a b l e - d a t u m f r
0022660 e e l i s t : \r l e 4
0022700 2 6 i t e m s ;
0022720 1 0 4 c e l l s . \r l e
0022740 1 6 7 2 i t e m s
0022760 ; 7 8 3 c e l l s . \r
0023000 l e 6 4 3 6 i t
0023020 e m s ; 9 6 4 c e l l
0023040 s . \r l e 2 5 6 2 8
0023060 i t e m s ; 3 1 5 5 c
0023100 e l l s . \r l e 1 0 2 4
0023120 3 i t e m s ; 1 1 7
0023140 5 c e l l s . \r l e 4 0 9 6
0023160 5 i t e m s ;
0023200 8 3 0 3 c e l l s . \r l e 1
0023220 6 3 8 4 3 i t e m s ;
0023240 1 7 0 6 7 c e l l s . \r o
0023260 t h e r s 1 i t e
0023300 m s ; 1 7 5 5 9 c e l l s
0023320 . } \r \r T h i s i n f o r m a
0023340 t i o n c a n b e u s e f
0023360 u l i n d e t e r m i n i n
0023400 g i f t h e v a r i a b l
0023420 e - l e n g t h d a t a s p
0023440 a c e i s f r a g m e n t e
0023460 d . I f m o s t o f t
0023500 h e f r e e s p a c e i s
0023520 c o m p o s e d o f s m a
0023540 l l i t e m s , t h e n t
0023560 h e a l l o c a t o r m a y
0023600 n o t b e a b l e t o
0023620 f i n d r o o m f o r l a
0023640 r g e i t e m s , a n d w
0023660 i l l e x t e n d t h e v
0023700 a r i a b l e d a t u m s p
0023720 a c e . I f t h i s i s
0023740 e x t e n d e d t o o m u
0023760 c h , t h i s c o u l d c
0024000 a u s e a n { l i s p A R
0024020 R A Y S F U L L } e r r o r
0024040 , { i n d e x A R R A Y S F
0024060 U L L E r r o r } e v e n
0024100 i f t h e r e i s a l o
0024120 t o f s p a c e l e f t
0024140 i n l i t t l e c h u n k s
0024160 . \r } } \r \r \r { n o t e i s
0024200 t h e r e a n y r e a s o n
0024220 t o d o c u m e n t t h i
0024240 s ? ? ? \r ( A T O M H A S H # P
0024260 R O B E S S T R I N G ) \r R e
0024300 t u r n s t h e n u m b e r
0024320 o f p r o b e s i t t a
0024340 k e s t o f i n d a n a
0024360 t o m i n I n t e r l i s p
0024400 ' s a t o m h a s h t a b
0024420 l e w i t h p r i n t n a
0024440 m e = S T R I N G , o r
0024460 N I L i f n o s u c h a
0024500 t o m i s f o u n d . } \r \r
0024520 { F n D e f { N a m e S T O
0024540 R A G E . L E F T } { A r g s
0024560 } \r { T e x t \r P r o v i d e
0024600 s a p r o g r a m m a t i c
0024620 w a y o f d e t e r m i n
0024640 i n g h o w m u c h s t o
0024660 r a g e i s l e f t i n
0024700 t h e m a j o r d a t a a
0024720 r e a s i n t h e v i r t
0024740 u a l a d d r e s s s p a c
0024760 e . R e t u r n s a l i
0025000 s t o f t h e f o r m {
0025020 l i s p ( { a r g M D S F R
0025040 E E } { a r g M D S F R A C
0025060 } { a r g 8 M B F R A C }
0025100 { a r g A T O M F R E E } {
0025120 a r g A T O M F R A C } ) } ,
0025140 w h e r e t h e e l e m e
0025160 n t s a r e i n t e r p r e
0025200 t e d a s f o l l o w s : \r
0025220 \r { B e g i n L a b e l e d l
0025240 i s t S T O R A G E . L E F T
0025260 v a l u e s } \r \r { L a b e l
0025300 { a r g M D S F R E E } } \r
0025320 { T e x t T h e n u m b e r
0025340 o f f r e e p a g e s l
0025360 e f t i n t h e m a i n
0025400 d a t a s p a c e ( w h i c
0025420 h i n c l u d e s b o t h
0025440 f i x e d - l e n g t h a n d
0025460 v a r i a b l e - l e n g t h
0025500 d a t a t y p e s ) . } \r \r
0025520 { L a b e l { a r g M D S F
0025540 R A C } } \r { T e x t T h e
0025560 f r a c t i o n o f t h e
0025600 t o t a l p o s s i b l e m
0025620 a i n d a t a s p a c e t
0025640 h a t i s f r e e . } \r \r {
0025660 L a b e l { a r g 8 M B F R
0025700 A C } } \r { T e x t T h e f
0025720 r a c t i o n o f t h e t
0025740 o t a l m a i n d a t a s
0025760 p a c e t h a t i s f r e
0026000 e , r e l a t i v e t o e
0026020 i g h t m e g a b y t e s . \r
0026040 \r T h i s n u m b e r i s
0026060 u s e f u l w h e n u s i n
0026100 g I n t e r l i s p - D o n
0026120 s o m e e a r l y c o m p
0026140 u t e r s w h e r e t h e
0026160 h a r d w a r e l i m i t s
0026200 t h e a d d r e s s s p a c
0026220 e t o e i g h t m e g a b
0026240 y t e s . T h e f u n c t
0026260 i o n { i n d e x 3 2 M B A
0026300 D D R E S S A B L E F n } { f
0026320 n 3 2 M B A D D R E S S A B L
0026340 E } r e t u r n s n o n - {
0026360 l i s p N I L } i f t h e
0026400 c u r r e n t l y r u n n i
0026420 n g I n t e r l i s p - D s
0026440 y s t e m c a n u s e t h
0026460 e f u l l 3 2 m e g a b y
0026500 t e a d d r e s s s p a c e
0026520 . } \r \r { L a b e l { a r g
0026540 A T O M F R E E } } \r { T e x t
0026560 T h e n u m b e r o f f
0026600 r e e p a g e s l e f t i
0026620 n t h e l i t a t o m s p
0026640 a c e . } \r \r { L a b e l { a
0026660 r g A T O M F R A C } } \r { T
0026700 e x t T h e f r a c t i o n
0026720 o f t h e t o t a l l i
0026740 t a t o m s p a c e t h a t
0026760 i s f r e e . } \r \r { E n d
0027000 L a b e l e d l i s t S T O
0027020 R A G E . L E F T v a l u e s
0027040 } \r \r } } \r \r \r N o t e : A
0027060 n o t h e r i m p o r t a n t
0027100 s p a c e r e s o u r c e
0027120 i s t h e a m o u n t o f
0027140 t h e v i r t u a l m e m
0027160 o r y b a c k i n g f i l e
0027200 i n u s e ( s e e { f n
0027220 V M E M S I Z E } , { P a g
0027240 e R e f F n V M E M S I Z E
0027260 } ) . T h e s y s t e m
0027300 w i l l c r a s h i f t h
0027320 e v i r t u a l m e m o r y
0027340 f i l e i s f u l l , e
0027360 v e n i f t h e a d d r e
0027400 s s s p a c e i s n o t
0027420 e x h a u s t e d . \r \r \r } { E
0027440 n d S u b S e c S t o r a g
0027460 e A l l o c a t i o n a n d
0027500 G a r b a g e C o l l e c t
0027520 i o n } \r \r \r \r \0 \0 \0 \0 \0 004 \0 002
0027540 \0 ? \0 1 ( D E F A U L T F O N T
0027560 1 ( G A C H A 1 0 ) ( G
0027600 A C H A 8 ) ( T E R M I N A
0027620 L 8 ) ) \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0
0027640 ? \0 1 ( D E F A U L T F O N T
0027660 1 ( G A C H A 1 0 ) ( G A
0027700 C H A 8 ) ( T E R M I N A L
0027720 8 ) ) \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0027740 / X \0 \0 \0 \0 002 \0 \0 / X \0 001 z 272
0027757