information about the size of individual data-structures and the links
between them.
-It can do this the entire perl interpreter as well as specific data structures.
+It can do this for the entire perl interpreter internals as well as your own
+perl data structures.
It comes with scripts for storing this data in a database and visualizing it in
various forms, including graphs and an interactive treemap.
-Current implementation is all very alpha and rather hackish.
+Current implementation is alpha and rather hackish.
+For more info see http://blog.timbunce.org/2012/10/05/introducing-develsizeme-visualizing-perl-memory-use/
+and http://blog.timbunce.org/tag/sizeme/
-TODO:
+Random TODOs:
- Remove log scale checkboc from the treemp as it doesn't work yet
- Devel::SizeMe::Core - loads XS and sets options
- Devel::SizeMe - loads Devel::SizeMe::Core
- -d:SizeMe=opts?
- Devel::SizeMe::Stream - parse raw stream
- Devel::SizeMe::Store - db write
- Devel::SizeMe::Data - db read / orlite?
- Devel::SizeMe::Graph - data reading/processing for sizeme_graph
- sizeme_store - script wrapper for Devel::SizeMe::Store
- sizeme_graph - Mojolicious app wrapper using Devel::SizeMe::Graph
- tests!
- Support multiple runs to same sizeme_store process, generating separate files
- Name runs to allow total_size (for example) of multiple data structures
+ Integrate changes back into Devel::Size so we can share a common core.
+
+ Add ref count handling, per https://rt.cpan.org/Ticket/Display.html?id=79789
+ Output addr as a leaf of a link node for items not scanned due to ref cnt
+ render those as dotted lines on the graph visualization
+ (and thus change from a tree to a DAG) so we can see alternate paths.
+ Optionally add addr to all nodes to enable visualization of memory layout
+ Two cases where PERL_SUBVERSION is checked with a plain || (marked XXX)
- two cases where PERL_SUBVERSION is checked with a plain || (marked XXX)
+ Restructure:
+ Devel::SizeMe::Core - loads XS and sets options
+ Devel::SizeMe - loads Devel::SizeMe::Core
+ -d:SizeMe=opts?
+ Devel::SizeMe::Stream - parse raw stream
+ Devel::SizeMe::Store - db write
+ Devel::SizeMe::Data - db read / orlite?
+ Devel::SizeMe::Graph - data reading/processing for sizeme_graph
+ sizeme_store - script wrapper for Devel::SizeMe::Store
+ sizeme_graph - Mojolicious app wrapper using Devel::SizeMe::Graph
+ Move Devel::SizeMe::Graph and co out to separate distro.
- Add addr to leaf to enable visualization of memory layout
+ Tests!
+ Remove log scale checkbox from the treemp as it doesn't work yet
+ Support multiple runs to same sizeme_store process, generating separate files
+ Name runs to allow total_size (for example) of multiple data structures
- Add token for ptr to node already seen (identified by addr I presume)
- so we can move from a Tree to a DAG and see alternative name paths
- and reference loops