[Mono-list] Heap-Shot with no GUI.

Esben Laursen hyber at hyber.dk
Fri Nov 19 07:31:24 EST 2010

Den 18-11-2010 20:45, Paolo Molaro skrev:
> On 11/18/10 Esben Laursen wrote:
>> Allocation summary
>>        Bytes      Count  Average Type name
>>    378194872      83939     4505 System.Byte[]
> [...]
>> It looks like its the "System.Byte[]" type where I have my leak. However
>> is there someway that I can see what methos or class that is originates
>> from? I use Bytes[] several places, but I cannot seem to find the place,
>> as I only use them inside methods that should be destroyed my GC when it
>> has finished.
> You have an allocation summary, so you can see where the arrays were
> allocated with:
> 	mprof-report --traces output.mlpd

Hi Lupus,

Thanks for all your help... I get this output..

Mono log profiler data
         Profiler version: 0.2
         Data version: 3
         Mean timer overhead: 2626 nanoseconds
         Program startup: Thu Nov 18 14:27:22 2010
         Program ID: 4938

GC summary
         GC resizes: 0
         Max heap size: 0
         Object moves: 283899
         Gen0 collections: 83, max time: 20374us, total time: 669028us, 
average: 8060us
         Gen1 collections: 35, max time: 123462us, total time: 
1354130us, average: 38689us

Allocation summary
      Bytes      Count  Average Type name
  582718568      98056     5942 System.Byte[]
         557328000 bytes from:
                 pam.ClientRun:GetSshData (pam.ModuleOptions.SshOptions)
                 pam.SshControl:SendAndReturnData (string,string,int,bool)
                 pam.SshControl:GetData (string,int)
                 (wrapper remoting-invoke-with-check) 
SBSimpleSSH.TElSimpleSSHClient:ReceiveText ()
                 SBSimpleSSH.TElSimpleSSHClient:ReceiveText ()

The way I read the info is that my "ClientRun.ProcessCombinedModules" 
invokes the "ClientRun.GetSshData" that invokes 
SshControl.SendAndReturnData and so on..

My pam.SshControl.GetData invokes TElSimpleSSHClient:ReceiveText many 
times to check if there are data comming back. So as I understand it its 
in the "SBSimpleSSH.TElSimpleSSHClient:ReceiveText" that does not clear 
a Byte array.. The reason I am a little puzled about this is that the 
"ClientRun" class runs every 5 minutes (it has a timer), but just before 
it starts it sets "SshControl=null" and then later it creates a new 
instance, so even if the "ReveiveText" method did not clear the Byte 
array then it should be destroyed by the GC right?

Or am I reading the output wrong?



More information about the Mono-list mailing list