# NAME Catalyst::Plugin::MemoryUsage - Profile memory usage of requests # VERSION version 0.4.1 # SYNOPSIS In YourApp.pm: ```perl package YourApp; use Catalyst qw/ MemoryUsage /; ``` In a Controller class: ```perl sub foo :Path( '/foo' ) { # ... something_big_and_scary(); $c->memory_usage->record( 'finished running iffy code' ); # ... } ``` In yourapp.conf: ``` report 1 action_milestones 1 ``` # DESCRIPTION `Catalyst::Plugin::MemoryUsage` adds a memory usage profile to your debugging log, which looks like this: ``` [debug] [MemoryUsage] memory usage of request "http://localhost/index" from "127.0.0.1" .--------------------------------------------------+------+------+------+------+------+------+------+------+------+------. | | vsz | del- | rss | del- | sha- | del- | code | del- | data | del- | | | | ta | | ta | red | ta | | ta | | ta | +--------------------------------------------------+------+------+------+------+------+------+------+------+------+------+ | preparing for the request | 28M | | 22M | | 2.2M | | 1.1M | | 20M | | | after TestApp::Controller::Root : root/_BEGIN | 28M | | 22M | | 2.2M | | 1.1M | | 20M | | | after TestApp::Controller::Root : root/_AUTO | 28M | | 22M | | 2.2M | | 1.1M | | 20M | | | in the middle of index | 28M | | 22M | | 2.2M | | 1.1M | | 20M | | | after TestApp::Controller::Root : root/index | 28M | | 22M | | 2.2M | | 1.1M | | 20M | | | after TestApp::Controller::Root : root/_ACTION | 28M | | 22M | | 2.2M | | 1.1M | | 20M | | | after TestApp::Controller::Root : root/_END | 28M | | 22M | | 2.2M | | 1.1M | | 20M | | | after TestApp::Controller::Root : root/_DISPATCH | 28M | | 22M | | 2.2M | | 1.1M | | 20M | | '--------------------------------------------------+------+------+------+------+------+------+------+------+------+------' ``` # CONFIGURATION ## report If true, the memory usage is reported automatically (at debug level) at the end of the request. Defaults to true if we are in debugging mode, false otherwise. ## action\_milestones If true, automatically adds milestones for each action, as seen in the DESCRIPTION. Defaults to true if we are in debugging mode, false otherwise. # METHODS ## `memory_usage()` Returns the [Memory::Usage](https://metacpan.org/pod/Memory::Usage) object available to the context. To record more measure points for the memory profiling, use the `record()` method of that object: ```perl sub foo :Path { my ( $self, $c) = @_; ... big_stuff(); $c->memory_usage->record( "done with big_stuff()" ); ... } ``` ## `reset_memory_usage()` Discards the current `Memory::Usage` object, along with its recorded data, and replaces it by a shiny new one. # BUGS AND LIMITATIONS `Memory::Usage`, which is the module `Catalyst::Plugin::MemoryUsage` relies on to get its statistics, only work for Linux-based platforms. Consequently, for the time being `Catalyst::Plugin::MemoryUsage` only work on Linux and NetBSD. This being said, patches are most welcome. :-) # SEE ALSO [Memory::Usage](https://metacpan.org/pod/Memory::Usage) # AUTHOR Yanick Champoux [![endorse](http://api.coderwall.com/yanick/endorsecount.png)](http://coderwall.com/yanick) # COPYRIGHT AND LICENSE This software is copyright (c) 2018, 2012, 2011, 2010 by Yanick Champoux. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.