Hi, I am confused by what you are reporting. If you add 10.000 entries to the Transcript, then I don't see how that results in 1000s of those Strings being alive (and certainly not after a GC). I tried the following (both with the Transcript window open and closed): Transcript. Transcript open. Transcript clear. 1 to: 1e4 do: [ :each | Transcript crShow: DateAndTime now asString , ' MARKTEST ' , each asString ]. 3 timesRepeat: [ Smalltalk garbageCollect ]. [ | count | count := 0. String allSubInstancesDo: [ :each | (each includesSubstring: 'MARKTEST') ifTrue: [ count := count + 1 ] ]. count ] value. The count never went above 100. I am using Pharo 8 but 7 would be similar. If you are retaining so many of the messages that you wrote to the Transcript, then you must be doing something else. That being said, we do have an issue with the WriteStream held by the stream instance variable inside ThreadSafeTranscript. It is being reset from time to time and when #clear is called, but that does not bring down the size of the underlying collection below its 'one time peak'. Sven
On 8 Mar 2019, at 11:59, Trussardi Dario Romano <dario.trussardi@tiscali.it> wrote:
Ciao,
this morning i started with an image of about 240 MB.
I have 3 System Browser open ( for a long time ).
I close all the System Browser and save the image.
The image size after the save is about 131 MB.
The new SpaceTally printSpaceAnalysis report:
Class code space # instances inst space percent inst average size Array 4115 561766 37353480 25.60 66.49 ByteString 2942 249761 31313136 21.50 125.37
The Transcript entry reference basically does not change:
ByteString allInstances select:[ :i | i includesSubstring: 'NETWORK' ]
where 'NETWORK' is a string used in the methods to add Transcript entry Transcript show: ...... NETWORK' ......' .
The system found 2958 ByteString instances.... ( relative to the NETWORK )
The system found 22655 ByteString instances.... ( relative to the CASH )
Why are there many references in the system to the ByteString instances, created in the methods to report the data in Transcript ?
Someone to considerations ?
Thanks,
Dario
Ciao,
I thought that using Transcript as a report to analyze the operation of the code was a good thing - solution.
Unfortunately, however, the size of the image continues to increase ( and I think it's due to the use of the transcript )
and i can not find the solution to avoid the problem.
I could create a file to report everything about the operations code, but then it becomes difficult to manage, or am i wrong?
Other solutions - indications - references ?
Thanks,
Dario
Ciao,
thanks.
i have a Pharo 7.0 alpha build 1262.
I development a Seaside application.
May be you have a lot of still open Seaside session, which if I remember correctly are automatically shutdown after 10 min when not active.
Looking at Seaside session instances may give clue.
OK, i clear the seaside session with the relative seaside status Clear action.
But the image size keeps increasing, without an apparent reason.
The consideration that I can do and that in the method code i often use Transcript show: '.....NETWORK | CASH | .....' to check the correct functioning.
With the SpaceTally printSpaceAnalysis i note:
as of February 16th:
Class code space # in stances inst space percent inst average size Array 4115 656764 43904528 23.30 66.85 ByteString 2942 233871 27527272 14.60 117.70
as of March 4th Class code space # instances inst space percent inst average size Array 4115 837017 50564552 23.40 60.41 ByteString 2942 266620 31933216 14.80 119.77
Now i do:
ByteString allInstances select:[ :i | i includesSubstring: 'NETWORK' ]
where 'NETWORK' is a string used in the Transcript show: ...... NETWORK' ......' report entry.
The system found 3214 ByteString instances.... ( relative to the NETWORK )
The system found 22650 ByteString instances.... ( relative to the CASH )
The system found ..............
Because ?????
Does the system remember something about the string create for the Transcript show: entry ?
I need to reset something?
How can I analyze the situation?
I follow some aByteString entry with the pointersTo method
but for now I have not found the solution.
Thanks,
Dario