Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Devel::MAT::Tool::SizeUser Contributed Perl DocumentDevel::MAT::Tool::Sizes(3)

NAME
       "Devel::MAT::Tool::Sizes" - calculate sizes of SV structures

DESCRIPTION
       This "Devel::MAT" tool calculates the sizes of the structures around
       SVs.  The individual size of each individual SV is given	by the "size"
       method, though in several cases SVs can be considered to	be part	of
       larger structures of a combined aggregate size. This tool calculates
       those sizes and adds them to the	UI.

       The structural size is calculated from the basic	size of	the SV,	added
       to which	for various types is:

       ARRAY
	 Arrays	add the	basic size of every non-mortal element SV.

       HASH
	 Hashes	add the	basic size of every non-mortal value SV.

       CODE
	 Codes add the basic size of their padlist and constant	value, and all
	 their padnames, pads, constants and globrefs.

       The owned size is calculated by starting	at the given SV	and
       accumulating the	set of every strong outref whose refcount is 1.	This
       is the set of all SVs the original directly owns.

SV METHODS
       This tool adds the following SV methods.

   structure_set
	  @svs = $sv->structure_set

       Returns the total set of	the SV's structure.

   structure_size
	  $size	= $sv->structure_size

       Returns the size, in bytes, of the structure that the SV	contains.

   owned_set
	  @svs = $sv->owned_set

       Returns the set of every	SV owned by the	given one.

   owned_size
	  $size	= $sv->owned_size

       Returns the total size, in bytes, of the	SVs owned by the given one.

COMMANDS
   size
       Prints the sizes	of a given SV

	  pmat>	size defstash
	  STASH(61) at 0x556e47243e10=defstash consumes:
	    2.1	KiB directly
	    11.2 KiB structurally
	    54.2 KiB including owned referrants

   largest
	  pmat>	largest	-owned
	  STASH(61) at 0x55e4317dfe10: 54.2 KiB: of which
	   |   GLOB(%*)	at 0x55e43180be60: 16.9	KiB: of	which
	   |	|   STASH(40) at 0x55e43180bdd0: 16.7 KiB
	   |	|   GLOB(&*) at	0x55e4318ad330:	2.8 KiB
	   |	|   others: 15.0 KiB
	   |   GLOB(%*)	at 0x55e4317fdf28: 4.1 KiB: of which
	   |	|   STASH(34) at 0x55e4317fdf40: 4.0 KiB bytes
	  ...

       Finds and prints	the largest SVs	by size. The 5 largest SVs are shown.

       If counting sizes in a way that includes	referred SVs, a	tree is
       printed showing the 3 largest SVs within	these, and of those the	2
       largest referred	SVs again. This	should help identify large memory
       occupiers.

       Takes the following named options:

       --struct
	   Count SVs using the structural size.

       --owned
	   Count SVs using the owned size.

       By default, only	the individual SV size is counted.

AUTHOR
       Paul Evans <leonerd@leonerd.org.uk>

perl v5.32.0			  2020-08-20	    Devel::MAT::Tool::Sizes(3)

NAME | DESCRIPTION | SV METHODS | COMMANDS | AUTHOR

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Devel::MAT::Tool::Sizes&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help