はじめに
メモリ使用量を調べるって機能をちょっと使いたいところがあったので試した過程をメモします
下記のサイトを参考にさせてもらいました
GTopの代わりに、Devel::MemUsed
メモリ使用量を調べられるDevel::MemUsedを使ってみた
Perlでのメモリ開放について
Devel::MemUsedをインストール
どうやら、Perlでのメモリ開放についてにもあるとおり、CPANからは消えてる?ぽいのでGitHubからcloneします。
GitHub:https://github.com/jozef/devel-memused
cloneURLをコピってコマンドラインからgit cloneします
また、今回は試す用スクリプトとMemUsedモジュールを同じディレクトリ配下に入れて試すことにしました。tree結果ものせときます
# pwd /home/hoge/testdir # git clone https://github.com/jozef/devel-memused.git # tree . |-- devel-memused | |-- Build.PL | |-- Changes | |-- MANIFEST | |-- MANIFEST.SKIP | |-- lib | | `-- Devel | | `-- MemUsed.pm | `-- t | |-- 00_compile.t | |-- 01_Devel-MemUsed.t | |-- distribution.t | |-- pod-coverage.t | |-- pod-spell.t | |-- pod.t | `-- signature.t |-- memused_test01.pl `-- memused_test02.pl
スクリプトを書く
memusedを試してみる用のスクリプトはこんな感じで書きました
※MemUsed.pm内に記載があったサンプルと参考サイトにのってたサンプルそのままです。
memused_test01.pl
#!/usr/bin/perl # libに今回cloneしたファイルのパスを追加 use lib 'devel-memused/lib/'; use Devel::MemUsed; my $memused = Devel::MemUsed->new(); my %h = ( map { $_ => 1 } (1..100) ); print "my hash allocated $memused bytes of memory\n"; $memused->reset; my %h = ( map { $_ => 1 } (1..1000) ); print "my hash allocated $memused bytes of memory\n";
memused_test02.pl
#!/usr/bin/perl # libに今回cloneしたファイルのパスを追加 #!/usr/bin/perl use strict; use warnings; use lib 'devel-memused/lib/'; use Devel::MemUsed; my $memused = Devel::MemUsed->new(); print "code: $ARGV[0]\n"; $memused->reset(); eval $ARGV[0] or die "$@"; print "MemUsed $memused \n";
叩いてみる
いきなし叩いてみるとなにやらContextual/Return.pmがない的に怒られるのでついでにCPANインストールも行います
# perl memused_test01.pl
Can't locate Contextual/Return.pm in @INC (@INC contains: devel-memused/lib/Devel /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at devel-memused/lib/Devel/MemUsed.pm line 71.
BEGIN failed--compilation aborted at devel-memused/lib/Devel/MemUsed.pm line 71.
Compilation failed in require at memused_test.pl line 6.
BEGIN failed--compilation aborted at memused_test.pl line 6.# sudo perl -MCPAN -e shell
cpan[1]>install Contextual::Return# perl memused_test01.pl
my hash allocated 8544 bytes of memory
my hash allocated 157808 bytes of memory# perl memused_test02.pl 'use CGI; CGI->compile(":all");'
code: use CGI; CGI->compile(":all");
MemUsed 3358784