go内存被自动释放掉了?

发布于 2022-08-29 23:24:00 字数 1654 浏览 15 评论 0

按着教程上面写例子:
https://github.com/astaxie/build-web-application-with-golang/blob/master/ebook/06.3.md

package main

import (
    "fmt"
    "log"
    "net/http"
    "zlaravel"
    _ "zlaravel/session"
)

const (
    ROOT_DIR = "../"
)

func login(res http.ResponseWriter, req *http.Request) {

    fmt.Fprintf(res, "sei")
    fmt.Printf("%#v\n", globalSessions)//输出2
    return

    session := globalSessions.SessionStart(res, req)
    if value := req.FormValue("session"); value != "" {
        session.Set("sei", "fuck")
    }
    name := session.Get("sei").(string)
    fmt.Fprintf(res, name)
}

var globalSessions *zlaravel.Manage

func main() {
    http.HandleFunc("/", login)
    err := http.ListenAndServe(":8000", http.DefaultServeMux)
    if err != nil {
        log.Fatalln("error http.ListenAndServe create:", err)
    }
    fmt.Println("exit main process")//此处并没有运行到,应该是主线程没有退出
}

func init() {
    globalSessions, _ := zlaravel.NewManage(zlaravel.ProviderTypeMemcache, "phpsessionid", 60)
    fmt.Printf("%#v\n", globalSessions)//输出1.
    go globalSessions.GC()
}

输出内容为:

1.    &zlaravel.Manage{cookieName:"phpsessionid", provide:(*session.Provider)(0x8090b0), maxLifeTime:60, lock:sync.Mutex{state:0, sema:0x0}}
2.    (*zlaravel.Manage)(nil)

现在输出1,应该是正常.但是到了输出2就出问题了.内存被释放了?
而且主线程没有退出阿?
目前平台是:windows_amd64
请高手帮我解决一下.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执着的年纪 2022-09-05 23:24:00

原来是我写错了.
globalSessions, _ := zlaravel.NewManage(zlaravel.ProviderTypeMemcache, "phpsessionid", 60)
多了一个":"号,变成局部变量了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文