file:read_file in R7B

Klacke klacke@REDACTED
Thu Nov 16 14:32:47 CET 2000


On Thu, Nov 16, 2000 at 03:24:19PM +0100, matthias@REDACTED wrote:
> Miguel Barreiro Paz writes:
> 
>  > 	file:read_file/1 under R7B takes up an insane amount of memory,
>  > while it seemed to be far more reasonable in R6B. Is this a known
>  > bug? (or, probably, am I missing something?)
> 
> Can you be a bit more specific about the problem, e.g. how big is the
> file you're reading, how are you measuring memory, and what
> constitutes an "insane" amount?
> 
> One way which R7 differs from R6 is that many things involving
> binaries execute very slowly (and gobble memory) **in the shell**. For
> instance, doing
> 
>    {ok, Bin} = file:read_file("/usr/share/dict/words").
> 
> in the shell causes my beam emulator to jump to about 20Mb. Doing the
> same thing in a program, or even in different way in the shell:
> 
>    {ok, Bin} = file:read_file("/usr/share/dict/words"), z.
> 
> does not show unexpected memory consumption. 
> 
> Taking a guess, this is because the shell has an interpreter for
> binary operations.



It's because the shell keeps a histrory list of old
values. These values are accessible trough i.e v(-3) to get
3 values back. Thus the binary returned in 'Bin' above
is kept in the history list, and thus not freed for a while.

Killing the shell with exit() will make it drop the the history list.



/klacke


-- 
Claes Wikstrom                        -- Caps is nowhere and
Alteon WebSystems                     -- everything is under control          
http://www.bluetail.com/~klacke       --




More information about the erlang-questions mailing list