Browse Source

:art: 内核垃圾回收

Liang Ding 2 năm trước cách đây
mục cha
commit
74e7ecd5a5

+ 2 - 2
kernel/model/box.go

@@ -25,7 +25,7 @@ import (
 	"os"
 	"path"
 	"path/filepath"
-	"runtime"
+	"runtime/debug"
 	"sort"
 	"strings"
 	"sync"
@@ -517,7 +517,7 @@ func fullReindex() {
 	sql.EnableCache()
 	treenode.SaveBlockTree(true)
 	LoadFlashcards()
-	runtime.GC()
+	debug.FreeOSMemory()
 	go func() {
 		time.Sleep(3 * time.Second)
 		util.PushClearMsg(msgId)

+ 2 - 2
kernel/model/import.go

@@ -31,7 +31,7 @@ import (
 	"os"
 	"path"
 	"path/filepath"
-	"runtime"
+	"runtime/debug"
 	"sort"
 	"strconv"
 	"strings"
@@ -700,7 +700,7 @@ func ImportFromLocalPath(boxID, localPath string, toPath string) (err error) {
 
 	IncSync()
 	util.ReloadUI()
-	runtime.GC()
+	debug.FreeOSMemory()
 	return
 }
 

+ 2 - 1
kernel/model/index.go

@@ -19,6 +19,7 @@ package model
 import (
 	"fmt"
 	"runtime"
+	"runtime/debug"
 	"strings"
 	"sync"
 	"time"
@@ -125,7 +126,7 @@ func index(boxID string) {
 	end := time.Now()
 	elapsed := end.Sub(start).Seconds()
 	logging.LogInfof("rebuilt database for notebook [%s] in [%.2fs], tree [count=%d, size=%s]", box.ID, elapsed, treeCount, humanize.Bytes(uint64(treeSize)))
-	runtime.GC()
+	debug.FreeOSMemory()
 	return
 }
 

+ 2 - 2
kernel/model/index_fix.go

@@ -21,7 +21,7 @@ import (
 	"os"
 	"path"
 	"path/filepath"
-	"runtime"
+	"runtime/debug"
 	"strings"
 	"sync"
 	"time"
@@ -149,7 +149,7 @@ func autoFixIndex() {
 	util.PushStatusBar(Conf.Language(58))
 	sql.WaitForWritingDatabase()
 	util.PushStatusBar(Conf.Language(185))
-	runtime.GC()
+	debug.FreeOSMemory()
 }
 
 func reindexTreeByUpdated(rootUpdatedMap, dbRootUpdatedMap map[string]string) {

+ 2 - 2
kernel/sql/cache.go

@@ -17,7 +17,7 @@
 package sql
 
 import (
-	"runtime"
+	"runtime/debug"
 	"time"
 
 	"github.com/88250/lute/ast"
@@ -45,7 +45,7 @@ func DisableCache() {
 
 func ClearBlockCache() {
 	memCache.Clear()
-	runtime.GC()
+	debug.FreeOSMemory()
 }
 
 func putBlockCache(block *Block) {

+ 2 - 0
kernel/sql/database.go

@@ -25,6 +25,7 @@ import (
 	"path/filepath"
 	"regexp"
 	"runtime"
+	"runtime/debug"
 	"strings"
 	"sync"
 	"time"
@@ -1267,6 +1268,7 @@ func closeDatabase() (err error) {
 	}
 
 	err = db.Close()
+	debug.FreeOSMemory()
 	runtime.GC() // 没有这句的话文件句柄不会释放,后面就无法删除文件
 	return
 }

+ 3 - 3
kernel/sql/queue.go

@@ -21,7 +21,7 @@ import (
 	"errors"
 	"fmt"
 	"path"
-	"runtime"
+	"runtime/debug"
 	"sync"
 	"time"
 
@@ -128,12 +128,12 @@ func FlushQueue() {
 		}
 
 		if 16 < i && 0 == i%128 {
-			runtime.GC()
+			debug.FreeOSMemory()
 		}
 	}
 
 	if 128 < len(ops) {
-		runtime.GC()
+		debug.FreeOSMemory()
 	}
 
 	elapsed := time.Now().Sub(start).Milliseconds()

+ 2 - 1
kernel/treenode/blocktree.go

@@ -21,6 +21,7 @@ import (
 	"os"
 	"path/filepath"
 	"runtime"
+	"runtime/debug"
 	"strings"
 	"sync"
 	"time"
@@ -380,7 +381,7 @@ func InitBlockTree(force bool) {
 	waitGroup.Wait()
 	p.Release()
 
-	runtime.GC()
+	debug.FreeOSMemory()
 	elapsed := time.Since(start).Seconds()
 	logging.LogInfof("read block tree [%s] to [%s], elapsed [%.2fs]", humanize.Bytes((size)), util.BlockTreePath, elapsed)
 	return