Ciao,

        About  Hilaire:

>       Beside the browser windows, did you close all Transcript windows?

        Yes.

> Hi,
> 
> I am confused by what you are reporting.

        I apologize, i'm trying to understand better.
> 
> 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.

        I did some tests following the code you reported.

        The thing I noticed is that  the image size after some entry,  from 
144MB is splashed at 272MB.

        +10 MB at each step:

                 1 to: 1e4 do: [ :each | 
                        Transcript crShow: DateAndTime now asString , ' 
MARKTEST ' , each asString ].

> 
> 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.
        
I haven't been able to document it for now,

        but I had the feeling that the following code creates problems:

        testImageSizeCreateTranscriptEntryB
            " Create some transcript entry "
          | count  |
         count := 0.
         [ 1 to: 1e4 do:[ :each |
            [ Transcript crShow: DateAndTime now asString, ' DARIOTEST ', each 
asString.
            1 / ( 0 to: 10 ) atRandom ]
         on: Error
         do:[ :ex | count := count +1.
                        ex retry ] ] ]value.
         ^ count

        Could it be that the retry creates, has created problems?

        Thanks,

                Dario
        
> 
> 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.trussa...@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
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
> 
> 


Reply via email to