[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Tracking memory usage
- From: Paul K <paulclinger@...>
- Date: Sat, 25 Aug 2012 00:11:13 -0700
I've been reading about optimizing memory usage in Lua
(http://fmeus.wordpress.com/2009/01/19/optimizing-memory-usage-in-lua/
and http://bitsquid.blogspot.com/2011/08/fixing-memory-issues-in-lua.html)
and would like to be able to show memory statistics for my Lua
applications. I know about collectgarbage("count"), but I'm trying to
get more detailed information about memory allocations using available
Lua methods.
One thing that comes to mind is to track call/return events using
debug hook and take snapshots of allocated memory during those events.
Two questions related to that:
1. Do I need to call collectgarbage("collect") before calling "count"
to get a proper number?
2. This information is missing all the allocations that happen during
function execution. Or do I need to call "count" twice in the "return"
event to get the amount of allocated memory:
"call" event
collectgrabage("collect")
initial = collectgarbage("count")
"return" event
allocated = collectgarbage("count")
collectgarbage("collect") -- does this free the memory deallocated
in the blog?
final = collectgarbage("count")
Does "final - allocated" tell me the amount of memory *temporarily*
allocated/released by the function/block?
Does "final - initial" tell me the amount of memory allocated by the
function/block in global/upvalue variables?
Also, is there any way to see how much memory is allocated by a
particular data structure (a table)? Even approximately/heuristically,
based on the number of array/hash elements it stores?
If none of this is possible using existing Lua methods, is there a
module available from Lua that provides that information? Thank you.
Paul.