タグ

memoryとperlに関するtyruのブックマーク (3)

  • Perlのメモリリークを見つける方法 - Islands in the byte stream (legacy)

    Perlではメモリリーク検出ツールがいくつか開発されているので、top(1)の結果を眺めるよりそういうツールを使うほうが楽である。 さて、メモリリークが発生しているとき、その可能性としてはだいたい以下の4つが挙げられる。 Perlレベルでの循環参照 グローバル変数に値をどんどん足しているとき*1 XSレベルでリファレンスカウントの管理ミス XSレベルでmalloc()したメモリの管理ミス この1-3についてはすべてPerlインタプリタ内の出来事であり、Test::LeakTraceを使って検出できる。4を検出するのは難しいが、Test::Valgrindが役に立つ。 Test::LeakTraceのSYNOPSISは歴史的経緯によりごちゃごちゃしているが、テストで使うべき関数はno_leaks_ok()とleaks_cmp_ok()だけである。 たとえば、以下のようにして使う*2。 #!p

    Perlのメモリリークを見つける方法 - Islands in the byte stream (legacy)
  • #perl - $Config{usemymalloc} : 404 Blog Not Found

    2009年10月16日00:30 カテゴリLightweight Languages #perl - $Config{usemymalloc} それを返さないかは、その perl が受胎(conceive)したとき、平たく言えばどうConfigureされたかによって決まります。 Perl5 doesn't release SV's memory - SVアリーナのメモリ領域確保は一度おこなわれたら、「もう一生離さないぜ」な件 - TokuLog 改めB日記 Perl5 はメモリプールをもってる」ってのは、Perl Monger なら誰でもしってるわけですが、30MB とか領域確保したら、それはプールしないで、すぐ返すだろ JK とおもってたら、返してなかったので、それについて調べたときのメモ。perl がメモリーを返してくれるかどうかは、以下の簡単なscriptでチェックできます。 use

    #perl - $Config{usemymalloc} : 404 Blog Not Found
  • クロージャの解放 - Pixel Pedals of Tomakomai

    gist落ちてるのでここにメモ。 package DONE1; sub DESTROY{ warn 'd1:', shift; } package DONE2; sub DESTROY{ warn 'd2:', shift; } package DONE3; sub DESTROY{ warn 'd3:', shift; } package DONE4; sub DESTROY{ warn 'd4:', shift; } package DONE5; sub DESTROY{ warn 'd5:', shift; } package main; use strict; use warnings; use Scalar::Util; my ($inner, $outer); { my $d1 = bless {}, 'DONE1'; my $d2 = bless {}, 'DONE2'; b

    クロージャの解放 - Pixel Pedals of Tomakomai
  • 1