Devel::Size#

📦 std

Devel::Size - how much memory a Perl variable uses.

use Devel::Size qw(size total_size);

my $bytes = size("A string");        # the scalar itself
my @list  = (1 .. 1000);
my $flat  = size(\@list);            # the array, not its elements
my $deep  = total_size(\@list);      # the array and all it holds

size counts a variable and the memory it owns directly: a scalar’s string buffer, an array’s slot vector, a hash’s buckets and keys. total_size also follows what an array or hash contains, and what references point to, counting each thing reachable once. Pass a reference to measure an array, a hash or a code reference.

The numbers are the sizes of the interpreter’s own structures, laid out as perl 5.44 lays them out, so they agree with perl 5.44 running the XS Devel::Size. $Devel::Size::warn (default 1) turns the module’s warnings about sizes it cannot work out completely on or off; $Devel::Size::dangle (default 0) enables warnings about invalid pointers met on the way.

This is a native implementation of the CPAN distribution Devel-Size 0.87; its Devel/Size.pm is used unchanged.

Functions#

Other Functions#

size#

size($thing) (ix 0) / total_size($thing) (ix 2, its ALIAS): bytes used by $thing, or by what a reference points to.

Also available as Devel::Size::total_size.