Talk:How the Nasal GC works

From FlightGear wiki
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