Thanks for the pointer! I am still puzzled by the former (allocation 
associated with the import line). I thought it could be an init() function 
in this file, but that does not explain it...

On Monday, December 4, 2017 at 5:47:09 PM UTC-8, Dave Cheney wrote:
>
>
>
> On Tuesday, 5 December 2017 12:09:54 UTC+11, Sangjin Lee wrote:
>>
>> A couple of questions on understanding go pprof's memory profile...
>>
>> When I list a certain function (with --alloc_objects), I see an 
>> allocation number associated with an import line mysteriously. I am pretty 
>> certain I can rule out any source line offset. For example,
>>
>> (pprof) list foo
>> Total: 534804146
>> ROUTINE ======================== (snip)
>>   24057960   27540717 (flat, cum)  5.15% of Total
>>          .          .      1:package protocol
>>          .          .      2:
>>          .          .      3:import (
>>   12092676   12092676      4:   "bytes"
>>          .          .      5:   "fmt"
>>          .          .      6:   "net/url"
>>          .          .      7:   "strconv"
>>          .          .      8:   "strings"
>>          .          .      9:   "time"
>>          .          .     10:   "unicode"
>>          .          .     11:)
>>
>> Any idea how to interpret this?
>>
>> In addition, is there a way to drill down further into exactly what type 
>> of memory allocation is contributing to the allocation when I list a 
>> function? The tree/web/pdf view doesn't break down further function names 
>> (only shows the boxes with what I believe is the individual allocation 
>> size). I'm kind of guessing from the line of code on what it is, but it'd 
>> be great if there is a way to track down exactly what type of memory 
>> allocation it is (string copy, map growth, byte allocation, etc.). For 
>> example,
>>
>> (pprof) list add
>> Total: 534804146
>> ROUTINE ======================== (snip)
>>   17248777   17248777 (flat, cum)  3.23% of Total
>>          .          .    220: l *logger
>>          .          .    221:}
>>          .          .    222:
>>          .          .    223:func (l *logger) add(data 
>> map[string]interface{}) {
>>          .          .    224: if id := l.Id(); id != "" {
>>   17248777   17248777    225: data[ID] = id
>>          .          .    226: }
>>          .          .    227:}
>>          .          .    228:
>>
>> where id is a string.
>>
>
> The allocations are taking the address of the value of id when it is boxed 
> into an interface{} 
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to