MemoryUsage¶
from panda3d.core import MemoryUsage
-
class
MemoryUsage
¶ Bases:
MemoryHook
This class is used strictly for debugging purposes, specifically for tracking memory leaks of reference-counted objects: it keeps a record of every such object currently allocated.
When compiled with NDEBUG set, this entire class does nothing and compiles to a stub.
Inheritance diagram
-
__init__
(param0: MemoryUsage)¶
-
property
counting
→ bool¶ Returns true if the
MemoryUsage
object is currently at least counting memory (e.g. this is a Windows debug build), even if it’s not fully tracking it.
-
property
current_cpp_size
→ int¶ Returns the total number of bytes of allocated memory consumed by C++ objects, not including the memory previously frozen.
-
property
external_size
→ int¶ Returns the total number of bytes of allocated memory in the heap that Panda didn’t seem to be responsible for. This includes a few bytes for very low-level objects (like
ConfigVariables
) that cannot use Panda memory tracking because they are so very low-level.This also includes all of the memory that might have been allocated by a high-level interpreter, like Python.
This number is only available if Panda is able to hook into the actual heap callback.
-
static
freeze
()¶ ‘Freezes’ all pointers currently stored so that they are no longer reported; only newly allocate pointers from this point on will appear in future information requests. This makes it easier to differentiate between continuous leaks and one-time memory allocations.
-
static
getCurrentCppSize
() → int¶ Returns the total number of bytes of allocated memory consumed by C++ objects, not including the memory previously frozen.
-
static
getExternalSize
() → int¶ Returns the total number of bytes of allocated memory in the heap that Panda didn’t seem to be responsible for. This includes a few bytes for very low-level objects (like
ConfigVariables
) that cannot use Panda memory tracking because they are so very low-level.This also includes all of the memory that might have been allocated by a high-level interpreter, like Python.
This number is only available if Panda is able to hook into the actual heap callback.
-
static
getPandaHeapArraySize
() → int¶ Returns the total number of bytes allocated from the heap from code within Panda, for arrays.
-
static
getPandaHeapOverhead
() → int¶ Returns the extra bytes allocated from the system that are not immediately used for holding allocated objects. This can only be determined if ALTERNATIVE_MALLOC is enabled.
-
static
getPandaHeapSingleSize
() → int¶ Returns the total number of bytes allocated from the heap from code within Panda, for individual objects.
-
static
getPandaMmapSize
() → int¶ Returns the total number of bytes allocated from the virtual memory pool from code within Panda.
-
static
getPointers
(result: MemoryUsagePointers)¶ Fills the indicated
MemoryUsagePointers
with the set of all pointers currently active.
-
static
getPointersOfAge
(result: MemoryUsagePointers, from: float, to: float)¶ Fills the indicated
MemoryUsagePointers
with the set of all pointers that were allocated within the range of the indicated number of seconds ago.
-
static
getPointersOfType
(result: MemoryUsagePointers, type: TypeHandle)¶ Fills the indicated
MemoryUsagePointers
with the set of all pointers of the indicated type currently active.
-
static
getPointersWithZeroCount
(result: MemoryUsagePointers)¶ Fills the indicated
MemoryUsagePointers
with the set of all currently active pointers (that is, pointers allocated since the last call tofreeze()
, and not yet freed) that have a zero reference count.Generally, an undeleted pointer with a zero reference count means its reference count has never been incremented beyond zero (since once it has been incremented, the only way it can return to zero would free the pointer). This may include objects that are allocated statically or on the stack, which are never intended to be deleted. Or, it might represent a programmer or compiler error.
This function has the side-effect of incrementing each of their reference counts by one, thus preventing them from ever being freed–but since they hadn’t been freed anyway, probably no additional harm is done.
-
static
getTotalCppSize
() → int¶ Returns the total number of bytes of allocated memory consumed by C++ objects, including the memory previously frozen.
-
static
getTotalSize
() → int¶ Returns the total size of allocated memory consumed by the process, as nearly as can be determined.
-
static
isCounting
() → bool¶ Returns true if the
MemoryUsage
object is currently at least counting memory (e.g. this is a Windows debug build), even if it’s not fully tracking it.
-
static
isTracking
() → bool¶ Returns true if the
MemoryUsage
object is currently tracking memory (e.g. track-memory-usage is configured #t).
-
property
panda_heap_array_size
→ int¶ Returns the total number of bytes allocated from the heap from code within Panda, for arrays.
-
property
panda_heap_overhead
→ int¶ Returns the extra bytes allocated from the system that are not immediately used for holding allocated objects. This can only be determined if ALTERNATIVE_MALLOC is enabled.
-
property
panda_heap_single_size
→ int¶ Returns the total number of bytes allocated from the heap from code within Panda, for individual objects.
-
property
panda_mmap_size
→ int¶ Returns the total number of bytes allocated from the virtual memory pool from code within Panda.
-
static
showCurrentAges
()¶ Shows the breakdown of ages of all of the active pointers.
-
static
showCurrentTypes
()¶ Shows the breakdown of types of all of the active pointers.
-
static
showTrendAges
()¶ Shows the breakdown of ages of all of the pointers allocated and freed since the last call to
freeze()
.
-
static
showTrendTypes
()¶ Shows the breakdown of types of all of the pointers allocated and freed since the last call to
freeze()
.
-
property
total_cpp_size
→ int¶ Returns the total number of bytes of allocated memory consumed by C++ objects, including the memory previously frozen.
-
property
total_size
→ int¶ Returns the total size of allocated memory consumed by the process, as nearly as can be determined.
-
property
tracking
→ bool¶ Returns true if the
MemoryUsage
object is currently tracking memory (e.g. track-memory-usage is configured #t).
-