小编Igu*_*han的帖子

为什么 Go 堆栈中的切片会被垃圾回收?

    \n
  1. 我编写了一个函数来复制string[]byte\xef\xbc\x9a
  2. \n
\n
func unsafeStringToBytes(xxxxxs string) []byte {\n    p := &xxxxxs\n    sh := (*reflect.StringHeader)(unsafe.Pointer(p))\n    sliceHeader := &reflect.SliceHeader{\n        Data: sh.Data,\n        Len:  sh.Len,\n        Cap:  sh.Len,\n    }\n\n    runtime.GC()\n    time.Sleep(10 * time.Nanosecond)\n\n    b := *(*[]byte)(unsafe.Pointer(sliceHeader))\n    return b\n}\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  1. 然后,我写一个测试:
  2. \n
\n
package gc\n\nimport (\n    "bufio"\n    "log"\n    "os"\n    "reflect"\n    "runtime"\n    "testing"\n    "time"\n    "unsafe"\n)\n\nfunc TestWriteLog(t *testing.T) {\n    f1, err := os.Create("./log")\n    if err != nil {\n        log.Fatal(err)\n    }\n    defer f1.Close()\n\n    for i := 0; i <= 1000000; i++ {\n        _, …
Run Code Online (Sandbox Code Playgroud)

garbage-collection go

1
推荐指数
1
解决办法
289
查看次数

标签 统计

garbage-collection ×1

go ×1