caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* memory problems
@ 2000-06-22 20:19 Michael Wall
  2000-06-23 14:42 ` Pierpaolo Bernardi
  0 siblings, 1 reply; 2+ messages in thread
From: Michael Wall @ 2000-06-22 20:19 UTC (permalink / raw)
  To: caml-list

hi everyone,

i have an interesting problem i've run into a few times regarding memory
leaks and reference passing.

basically, if i pass a reference to a recursive binding i get a memory
leak when 
i compile with the optimized compiler but if i compile with the bytecode
compiler 
everything is ok.  eg:

in main:

let maxI = ref 1000 in
let vnew = COMPLEX_HOPFIELD.relax_neat (p, v, h, t, s, n, maxI) in

in relax_neat:

    let rec relax_neat (p, v, h, t, s, n, maxI) = 
      maxI:=!maxI -1;
      let pnew = runge_katta p h t s ({real = 1e-1; imag = 0.0}) n in
      let vnew = p_to_v pnew n in
      let hnew = to_h t vnew s n in
      let eps = COMPLEX_MATH.dis v vnew n in
      if !maxI > 0 && eps > 1.e-15 then (relax_neat (pnew, vnew, hnew,
t, s, n, maxI)) else
      vnew

i know its the reference be the optimized program ceases to leak when i
remove it.

forgive me if this is a known problem, i am new to caml and this group.

anyones insight into this would be greatly appreciated,

Regards,

-- 
Mike Wall
310-225-2975 ext 156
mwall@liquidmarket.com



^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: memory problems
  2000-06-22 20:19 memory problems Michael Wall
@ 2000-06-23 14:42 ` Pierpaolo Bernardi
  0 siblings, 0 replies; 2+ messages in thread
From: Pierpaolo Bernardi @ 2000-06-23 14:42 UTC (permalink / raw)
  To: Michael Wall; +Cc: caml-list


On Thu, 22 Jun 2000, Michael Wall wrote:

>     let rec relax_neat (p, v, h, t, s, n, maxI) = 

Are you by chance using an Intel x86 processor?

If so, this is a known problem.  It depends from relax_neat having more
parameters than the x86 registers available.

If this is the problem, it is easily solvable in your case, because it is
not necessary to pass down the parameters t, s, n and maxI (you may make
them global wrt the recursive function).


Hope this helps.
  Pierpaolo



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2000-06-26 10:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-06-22 20:19 memory problems Michael Wall
2000-06-23 14:42 ` Pierpaolo Bernardi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).