1package HTTP::Engine::Middleware::Status::Memory; 2use Any::Moose; 3extends 'HTTP::Engine::Middleware::Status::Base'; 4 5use B::TerseSize; 6use Devel::Symdump; 7 8has '+name' => ( 9 default => 'Memory', 10); 11 12sub render { 13 my($self, %args) = @_; 14 15 my $stab = Devel::Symdump->rnew("main"); 16 my %size; 17 for my $package ("main", $stab->packages) { 18 my($subs, $opcount, $opsize) = B::TerseSize::package_size($package); 19 $size{$package} = $opsize; 20 } 21 22 my $table = "<table>\n"; 23 for my $package (sort {$size{$b}<=>$size{$a}} keys %size) { 24 $table .= sprintf "<tr><td>%-24s</td><td>%8d [KB]</tr>\n", $package, $size{$package} / 1024 ; 25 } 26 $table .= "</table>\n"; 27 28 $table; 29} 30 31__PACKAGE__->meta->make_immutable; 321; 33 34=head1 NAME 35 36HTTP::Engine::Middleware::Status::Memory - Memory Status Plugin 37 38=head1 SYNOPSIS 39 40 my $mw = HTTP::Engine::Middleware->new; 41 $mw->install( 'HTTP::Engine::Middleware::Status' => { 42 plugins => [ 43 'Memory', # use HTTP::Engine::Middleware::Status::Memory 44 ], 45 }); 46 47=head1 DESCRIPTION 48 49this pluin displays the used memory size which by the modules. 50 51=head1 SEE ALSO 52 53L<HTTP::Engine::Middleware::Status>, 54L<B::TerseSize>, 55L<Devel::Symdump> 56 57 58=head1 AUTHORS 59 60Kazuhiro Osawa 61 62=cut 63