Slice:
package main
import "fmt"
import "runtime"
func printMemStat(gcFirstly bool) {
if gcFirstly {
runtime.GC()
}
var stat runtime.MemStats
runtime.ReadMemStats(&stat)
println(stat.Alloc)
}
func main() {
bs := make([]int, 1000000)
printMemStat(false) // about 8071272
printMemStat(true) // about 67376
// looks the underlying bytes has already
// been garbage collected in the above call.
fmt.Println(len(bs))
}
Custom type:
package main
import "fmt"
import "runtime"
type T struct {
x int
y *[1000000]int
}
func printMemStat(gcFirstly bool) {
if gcFirstly {
runtime.GC()
}
var stat runtime.MemStats
runtime.ReadMemStats(&stat)
println(stat.Alloc)
}
func main() {
t := T{123, new([1000000]int)}
printMemStat(false) // about 8071576
printMemStat(true) // about 8071576
fmt.Println(t.x)
}
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.