第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQLite 3 不會在 Golang 中釋放內(nèi)存

SQLite 3 不會在 Golang 中釋放內(nèi)存

Go
阿晨1998 2021-08-23 16:52:47
我有越來越轉(zhuǎn)至問題與SQLite的發(fā)揮很好。我固定它在沒有問題的過去,但它已經(jīng)有一段時間,我不記得我做過什么來得到它的正常工作。我使用的mattn/go-sqlite3封裝工藝,并插入大量的數(shù)據(jù)到一個SQLite數(shù)據(jù)庫,但不知何故進(jìn)入最終總是吃的都是我的RAM,直到最后一個錯誤狀態(tài)代碼退出。只是,以確保我已經(jīng)分離出的內(nèi)存饑餓問題的SQLite我寫了下面的程序進(jìn)行測試:package mainimport (    "database/sql"    "fmt"    "log"    _ "github.com/mattn/go-sqlite3")func main() {    db, err := sql.Open("sqlite3", "./test.db"); if err != nil {        log.Fatal(err)    }; defer db.Close()    ddl := `        PRAGMA automatic_index = ON;        PRAGMA cache_size = 32768;        PRAGMA cache_spill = OFF;        PRAGMA foreign_keys = ON;        PRAGMA journal_size_limit = 67110000;        PRAGMA locking_mode = NORMAL;        PRAGMA page_size = 4096;        PRAGMA recursive_triggers = ON;        PRAGMA secure_delete = ON;        PRAGMA synchronous = NORMAL;        PRAGMA temp_store = MEMORY;        PRAGMA journal_mode = WAL;        PRAGMA wal_autocheckpoint = 16384;        CREATE TABLE IF NOT EXISTS "user" (            "id" TEXT,            "username" TEXT,            "password" TEXT        );        CREATE UNIQUE INDEX IF NOT EXISTS "id" ON "user" ("id");    `    _, err = db.Exec(ddl); if err != nil {        log.Fatal(err)    }    queries := map[string]*sql.Stmt{}    queries["user"], _ = db.Prepare(`INSERT OR REPLACE INTO "user" VALUES (?, ?, ?);`); if err != nil {        log.Fatal(err)    }; defer queries["user"].Close()    tx, err := db.Begin(); if err != nil {        log.Fatal(err)    }    for i := 0; i < 10000000; i++ {        user := map[string]string{            "id": string(i),            "username": "foo",            "password": "bar",        }        _, err := tx.Stmt(queries["user"]).Exec(user["id"], user["username"], user["password"]); if err != nil {            log.Fatal(err)        }當(dāng)我運行上面的代碼,圍棋吃超過100 MIB的記憶每一秒每沒有任何釋放,并且一分鐘左右之后,它最終消費6/7吉布然后程序就會被殺死。我嘗試過定義和不定義 SQLite PRAGMA 的變化,但沒有運氣。根據(jù)定義的編譯指示,SQLite的不應(yīng)該使用的RAM超過128 MIB。我是否犯了任何錯誤,或者 mattn/go-sqlite3 或 Go GC 有什么問題?
查看完整描述

3 回答

  • 3 回答
  • 0 關(guān)注
  • 532 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號