#!/usr/bin/perl -- sub print_size { my ( $msg ) = @_; my @lines = qx{pslist -m $$ 2>NUL}; shift @lines for 1..3; chomp @lines; #~ print join "\n", @lines, ""; #~ Name Pid VM WS Priv Priv Pk Faults NonP Page #~ perl 1052 25348 7220 4504 4512 1977 2 33 my %ps; @ps{'Name', 'Pid', 'VM', 'WS', 'Priv', 'Priv Pk', 'Faults', 'NonP', 'Page' } = grep length, split /\s+/, shift @lines; #~ Pri Priority #~ Thd Number of Threads #~ Hnd Number of Handles #~ VM Virtual Memory #~ WS Working Set ------ "Mem Usage" in taskmanager #~ Priv Private Virtual Memory ------ "VM Size" in taskmanager #~ Priv Pk Private Virtual Memory Peak #~ Faults Page Faults #~ NonP Non-Paged Pool #~ Page Paged Pool #~ Cswtch Context Switches #~ use DDS; Dump(\@lines , \%ps); #~ print "VM: $ps{VM} RSS: $ps{WS} - $msg\n"; print "VM: $ps{VM} < WS: $ps{WS} VM: $ps{Priv} > $msg\n"; } BEGIN { print_size('empty'); } use strict; BEGIN { print_size('strict'); } use warnings; BEGIN { print_size('warnings'); } use Module::Load qw' load '; BEGIN { print_size('Module::Load'); } foreach my $module ( qw[ Module::Loaded Module::Pluggable Time::HiRes Time::Local Time::Piece Time::Seconds Time::gmtime Time::localtime Time::tm Pod::Perldoc Pod::Simple Data::Dumper Scalar::Util Getopt::Long LWP::UserAgent Moose ] ){ load $module; print_size($module); } load POE => qw(Component::Server::TCP); print_size("POE => qw(Component::Server::TCP)"); __END__