:
Any+, heapdefs:
HeapDefs+) -> HeapView:
command+ [locals:
dict+]) -> thread_id:
iterable+ [is_mapping:
boolean+]]) -> NodeGraph:
thread_id+, exception:
Exception+):
anything:
Any+, heapdefs:
HeapDefs+) -> HeapView
:
Any+:
HeapDefs+:
command+ [locals:
dict+]) -> thread_id
:
command+:
dict+:
iterable+ [is_mapping:
boolean+]]) -> NodeGraph
:
iterable+:
boolean+:
thread_id+, exception:
Exception+)
:
anything.
HeapView(root:
Any+, heapdefs:
HeapDefs+) -> HeapView.
cli_indisize(memo:
dict+) -> ObjectClassifier.
cli_none() -> ObjectClassifier.
cli_rcs(referrers:
NodeGraph+, classifier:
ObjectClassifier+, memo:
dict+) -> ObjectClassifier.
cli_type() -> ObjectClassifier.
heap() -> NodeSet.
indisize_sum(S:
iterable+) -> int.
numedges(src:
Any+, tgt:
Any+) -> int.
reachable(X:
NodeSet+, Y:
NodeSet+) -> NodeSet.
reachable_x(X:
NodeSet+, Y:
NodeSet+) -> NodeSet.
register__hiding_tag__type(type_with_hiding_tag+).
register_hidden_exact_type(type+).
relate(src:
Any+, tgt:
Any+) -> RelationStructure.
relimg(S:
iterable+) -> NodeSet.
shpathstep(G:
NodeGraph+, U:
NodeSet+, S:
NodeSet+ [AvoidEdges:
NodeGraph+ [find_one:
boolean+]]) -> NodeSet.
update_dictowners(owners:
NodeGraph+).
update_referrers(X:
NodeGraph+, Y:
NodeSet+).
update_referrers_completely(X:
NodeGraph+).
_hiding_tag_:
anything.
delete_extra_type:
anything.
is_hiding_calling_interpreter:
boolean.
limitframe:
(
A HeapView object provides methods to get memory related information about the system heap and about individual objects.
It implements much of the low-level functionality for the Heapy system. It is intended to provide what can not be done at all or would be much slower if programmed directly in Python. It is not intended to be used directly by a user, but to be wrapped in higher level objects.
Some terms that are referred to in the method descriptions:
The HeapView object attempts to restrict its view of the heap to only the 'visible objects'. This is to make it possible to analyse the heap via a Python library that inevitably itself is continually allocating and deallocating objects. These should be hidden from the heap view presented. This is primarily done via a special tag attribute, see _hiding_tag_ and register__hiding_tag__type . Frames can be hidden with another mechanism, see limitframe. For hiding all objects of a special type, register_hidden_exact_type may be used. It is also possible to use a separate interpreter and hide its root objects, see is_hiding_calling_interpreter .
The individual size of an object is its individually allocated memory size.
It includes:
Some types of objects have extra memory allocated that can not be accounted for in the standard way. This memory should nevertheless be included in the individual size. To determine the size of these objects, special functions are needed. These are defined for standard builtin types, such as lists and dicts. Other types should be defined via the heapdefs argument to the HeapView constructor.
The individual size does not include:
.
cli_indisize(memo:
dict+) -> ObjectClassifier
:
dict+.
cli_none() -> ObjectClassifier
.
cli_rcs(referrers:
NodeGraph+, classifier:
ObjectClassifier+, memo:
dict+) -> ObjectClassifier
:
NodeGraph+:
ObjectClassifier+:
dict+.
cli_type() -> ObjectClassifier
.
heap() -> NodeSet
.
indisize_sum(S:
iterable+) -> int
.
numedges(src:
Any+, tgt:
Any+) -> int
.
reachable(X:
NodeSet+, Y:
NodeSet+) -> NodeSet
.
reachable_x(X:
NodeSet+, Y:
NodeSet+) -> NodeSet
.
register__hiding_tag__type(type_with_hiding_tag+)
.
register_hidden_exact_type(type+)
.
relate(src:
Any+, tgt:
Any+) -> RelationStructure
.
relimg(S:
iterable+) -> NodeSet
.
shpathstep(G:
NodeGraph+, U:
NodeSet+, S:
NodeSet+ [AvoidEdges:
NodeGraph+ [find_one:
boolean+]]) -> NodeSet
:
NodeGraph+:
NodeSet+:
NodeSet+:
NodeGraph+:
boolean+.
update_dictowners(owners:
NodeGraph+)
.
update_referrers(X:
NodeGraph+, Y:
NodeSet+)
.
update_referrers_completely(X:
NodeGraph+)
.
_hiding_tag_:
anything.
delete_extra_type:
anything.
is_hiding_calling_interpreter:
boolean.
limitframe:
(
.
NodeGraph( [edges:
iterable+ [is_mapping:
boolean+]]) -> NodeGraph.
add_edge(source:
Any+, target:
Any+).
add_edges_n1(srcs:
iterable+, tgt:
Any+).
as_flat_list() -> list.
clear().
copy() -> NodeGraph.
domain_covers(X:
iterable+) -> boolean.
domain_restricted(X:
iterable+) -> NodeGraph.
get_domain() -> NodeSet.
get_range() -> NodeSet.
invert().
inverted() -> NodeGraph.
relimg(X:
iterable+) -> NodeSet.
update(X:
iterable+).
updated(X:
iterable+) -> NodeGraph:
Any+] -> Any:
Any+] = target_spec:
TargetSpec+.
_hiding_tag_:
anything.
is_mapping:
boolean.
is_sorted:
booleanNodeGraph objects are used internally in the Heapy system, for example to record dict ownership and shortest-path graphs.
They may be used generally for mapping and dict-like purposes, but differ from dicts in the following:
.
add_edge(source:
Any+, target:
Any+)
.
add_edges_n1(srcs:
iterable+, tgt:
Any+)
.
as_flat_list() -> list
.
clear()
.
copy() -> NodeGraph
.
domain_covers(X:
iterable+) -> boolean
.
domain_restricted(X:
iterable+) -> NodeGraph
.
get_domain() -> NodeSet
.
get_range() -> NodeSet
.
invert()
.
inverted() -> NodeGraph
.
relimg(X:
iterable+) -> NodeSet
.
update(X:
iterable+)
.
updated(X:
iterable+) -> NodeGraph
:
Any+] -> Any:
Any+] = target_spec:
TargetSpec+.
_hiding_tag_:
anything.
is_mapping:
boolean.
is_sorted:
boolean