I have an image that is serving up logFiles using Seaside and Comanche. It has been steadily growing in size. It's now up to 49+MB.
Recently it started hanging. I have been able to run a SpaceTally on it and found that 33.1+MB are used for instances of ByteString. I haven't been able to track down all 99000+ instances, but I am almost sure that some of them are supposed to be temporary and are not getting garbageCollected. Has anyone else seen something similar to this?
Yes. I have about 25mb worth of ByteString instances in my seaside image, and I don't know where they all come from either.
rado
On Mon, 29 Aug 2005, Jason Rogers wrote:
I have an image that is serving up logFiles using Seaside and Comanche. It has been steadily growing in size. It's now up to 49+MB.
Recently it started hanging. I have been able to run a SpaceTally on it and found that 33.1+MB are used for instances of ByteString. I haven't been able to track down all 99000+ instances, but I am almost sure that some of them are supposed to be temporary and are not getting garbageCollected. Has anyone else seen something similar to this?
-- Jason Rogers
"I am crucified with Christ: nevertheless I live; yet not I, but Christ liveth in me: and the life which I now live in the flesh I live by the faith of the Son of God, who loved me, and gave himself for me." Galatians 2:20
On 8/29/05, Jason Rogers jacaetevha@fast-mail.org wrote:
Recently it started hanging. I have been able to run a SpaceTally on it and found that 33.1+MB are used for instances of ByteString. I haven't been able to track down all 99000+ instances,
I just checked my Squeak3.8-6665full.image, "right out of the box". 86301 instances of ByteString. So probably 86% of your ByteStrings are there for good reasons. (Nearly everything that used to be a String is now a ByteString, so it's a popular class.)
But it only takes one large instance to make a large image. This code, to be executed in a Workspace, should give you your top culprits.
tops := SortedCollection sortBlock: [:a :b | a size > b size]. thresh := 10000. ByteString allInstancesDo: [:s | s size > thresh ifTrue: [ tops add: s. [tops size > 10] whileTrue: [ thresh := tops last size. tops remove: tops last. ]]]. tops asArray inspect.
--Tom Phoenix
squeak-dev@lists.squeakfoundation.org