On Fri, Dec 12, 2008 at 10:36 AM, Tim Perrett <[email protected]> wrote:
> > Do you know why they decided to go for another 2.7.xx release - I > thought they were going to 2.8 next...? Because this is the kind of defect that calls for an immediate fix. It impacts every system that's using Actors and Actors are a key feature of Scala. I'm glad Martin and Philipp pulled out the stops to get a binary compatible fix for this defect. > > > Cheers, Tim > > On Dec 12, 6:26 pm, [email protected] wrote: > > Can do > > > > On 12/12/08, David Pollak <[email protected]> wrote: > > > > > Folks, > > > > > Who has time to do testing, etc. with 2.7.3? > > > > > Thanks, > > > > > David > > > > > ---------- Forwarded message ---------- > > > From: Philipp Haller <[email protected]> > > > Date: Fri, Dec 12, 2008 at 6:42 AM > > > Subject: Re: [scala-user] Is there a memory leak in 2.7.2 Actors? > > > To: David Pollak <[email protected]> > > > Cc: scala-user <[email protected]> > > > > > Hi again, > > > > > FYI, I committed a fix in r16750 (2.7.x branch) and r16751 (trunk). It > > > looks like we are probably releasing 2.7.3 including this fix some time > > > next week (or shortly after). > > > > > Cheers, > > > Philipp > > > > > [email protected] wrote: > > >> Hi, > > > > >> I found the memory leak. A fix should be ready shortly. > > > > >> Cheers, > > >> Philipp > > > > >> Quoting David Pollak <[email protected]>: > > > > >>> Folks, > > > > >>> I've been noticing that Lift apps run out of memory after a certain > > >>> period of time. This is a relatively new thing. I think I've > > >>> traced the problem back to a memory leak in the Actors library. The > > >>> enclosed program terminates with an out of memory error. > > > > >>> Am I failing to release the Actors in some way or is there a memory > leak? > > > > >>> Thanks, > > > > >>> David > > > > >>> import scala.actors._ > > >>> import Actor._ > > > > >>> object ActorWatcher extends Actor { > > >>> def act = loop { > > >>> react { > > >>> case Exit(actor: Actor, why: Throwable) => > > >>> failureFuncs.foreach(f => f(actor, why)) > > >>> case x => println(x) > > >>> } > > >>> } > > > > >>> private def startAgain(a: Actor, ignore: Throwable) {a.start} > > > > >>> private def logActorFailure(actor: Actor, why: Throwable) { > > >>> println("The ActorWatcher restarted "+actor+" because "+why) > > >>> } > > > > >>> /** > > >>> * If there's something to do in addition to starting the actor > > >>> up, pre-pend the > > >>> * actor to this List > > >>> */ > > >>> var failureFuncs: List[(Actor, Throwable) => Unit] = > logActorFailure _ > > > :: > > >>> startAgain _ :: Nil > > > > >>> this.start > > >>> this.trapExit = true > > >>> } > > > > >>> case object Start > > >>> case object EndMe > > > > >>> class A extends Actor { > > >>> def act = loop { > > >>> react { > > >>> case Start => > > >>> link(ActorWatcher) > > >>> case EndMe => > > >>> unlink(ActorWatcher) > > >>> exit() > > >>> } > > >>> } > > >>> } > > > > >>> object Sloth { > > >>> def z(in: Long) = if (in / 1024L == 0L) in > > >>> else if (in / (1024L * 1024L) == 0L) (in / 1024L).toString + "K" > > >>> else (in / (1024L * 1024L)).toString + "M" > > >>> def main(args: Array[String]) { > > >>> val rt = Runtime.getRuntime() > > >>> for (o <- 1 to 1000000) { > > >>> println("Outer "+o) > > >>> //var a: List[Actor] = Nil > > >>> for (i <- 1 to 10000) { > > >>> val t = new A > > >>> //a = t :: a > > >>> t.start > > >>> t ! Start > > >>> t ! EndMe > > >>> } > > >>> println("Done creating") > > >>> // for (act <- a) act ! EndMe > > >>> ActorGC.gc() > > >>> rt.gc() > > >>> println("Free "+z(rt.freeMemory())+" total "+z(rt.totalMemory())) > > >>> } > > >>> } > > >>> } > > > > >>> -- > > >>> Lift, the simply functional web frameworkhttp://liftweb.net > > >>> Collaborative Task Managementhttp://much4.us > > >>> Follow me:http://twitter.com/dpp > > >>> Git some:http://github.com/dpp > > > > > -- > > > Lift, the simply functional web frameworkhttp://liftweb.net > > > Collaborative Task Managementhttp://much4.us > > > Follow me:http://twitter.com/dpp > > > Git some:http://github.com/dpp > > > -- Lift, the simply functional web framework http://liftweb.net Collaborative Task Management http://much4.us Follow me: http://twitter.com/dpp Git some: http://github.com/dpp --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
