Do you know why they decided to go for another 2.7.xx release - I thought they were going to 2.8 next...?
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 --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
