Talk:How the Nasal GC works
Jump to navigation
Jump to search
Todo: discuss GC pressure traits
- number of total objects
- lifetime of objects (short lived vs. long lived)
- functions with long argument lists vs. no parameter list (arg) or global variables
- object complexity/nested objects (hashes, vectors)
- expensive operations (such as repeated string concatenation)
- funcs vs. hash.methods() (with shared variables via me)
- anonymous funcs vs. named functions
- memory pool freeing and reallocations
- memory fragmentation
Todo: Publish GC Stats in property tree
- total memory allocated
- size of each pool
- size of constants table
- total references (active objects)
- references per module/sub module
- pool requests per frame/second/minute
- pool requests per module
- new naAlloc() allocations per frame/second/minute
- new naAlloc() allocations per module
- free() calls per module
- pool size fluctuations per time unit (frame,second,minute)
- time spent in each gc function
- threading overhead (locking)?
Todo: Allow GC parameters to be tweaked via properties
- minimum/maximum pool size (free blocks)
- add property to disable collecting (just allocating)
- add property to trigger GC