in reply to hash and memory usage

Please review: Re: Is there a penalty for namespace use?


"Look, Shiny Things!" is not a better business strategy than compatibility and reuse.

Replies are listed 'Best First'.
Re^2: hash and memory usage
by Qiang (Friar) on Jan 08, 2005 at 03:32 UTC
    I read it through and It appears that seperating the memory consuming part into another script then exec it is one solution. but I don't see the memory gets released by doing it.

    I am using Parallel::ForkManager in the file1.pl, btw.

    file1.pl

    use Parallel::ForkManager; my $pm = new Parallel::ForkManager(4); foreach my $base_dir (@base_dirs) { my $storable_file = $storable_dir.$f; $pm->start and next; # do the fork `/home/qiang/file2.pl $storable_file $base_dir`; $pm->finish; } $pm->wait_all_children;

    file2.pl

    use File::Find; use Storable qw(store retrieve); my $storable_file = shift; my $base_dir = shift; my @usr_dirs = map {chomp;$base_dir."/".$_} `/bin/ls $base_dir`; my $mbox = {}; find(\&wanted,@usr_dirs); store $mbox, $storable_file or die "Can't store !\n";

      How are you determining that memory is being used?

      Also, looking at your file1.pl, I think you probably want an exec here rather than using the back tick.

      exec('/home/qiang/file2.pl', $storable_file, $base_dir);
      Because, from the docs, backticks does a fork and exec. So I would think you're probably doing fork from the ForkManager, Fork from backticks, then an exec from backticks. If that makes any sense.


      "Look, Shiny Things!" is not a better business strategy than compatibility and reuse.