develooper Front page | perl.perl5.porters | Postings from July 2000

memory leak?

Thread Next
From:
Jeffrey Friedl
Date:
July 31, 2000 11:13
Subject:
memory leak?
Message ID:
200007300436.VAA17664@ventrue.yahoo.com

Hi,
I've found a memory leak -- either between my ears, or in Perl.

This program:

    #!/usr/local/bin/perl -w
    use strict;

    sub size(;$)
    {
	my $message = shift || "";
	my ($ksize) = (`ps -p $$ -o vsize` =~ m/(\d+)/);
	printf "%4.1f meg: %s\n", $ksize/1024, $message;
    }

    size("start");
    size("start");
    size("start");
    {
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size();
	$_ = 'x' x (1024*1024); size("last inside block");
    }
    size("before undef");
    undef($_);
    size("after");


prints:

     2.5 meg: start
     2.5 meg: start
     2.5 meg: start
     4.5 meg: 
     5.5 meg: 
     6.5 meg: 
     7.5 meg: 
     8.5 meg: 
     9.5 meg: 
    10.5 meg: 
    11.5 meg: 
    12.5 meg: 
    13.5 meg: 
    14.5 meg: last inside block
    14.5 meg: before undef
    13.5 meg: after

Older versions of Perl that I checked do the same thing (except perl4, which
seems to preallocate the whole 14 meg at compile time). Also, I got the
same results on the various Linux/FreeBSD platforms I tested this on.

It seems odd that it's sucking up so much memory and never releasing it.
Should I submit this as a bug report?

	Jeffrey

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About