默认不启用内存分片管理

This commit is contained in:
刘祥超
2023-12-03 14:26:51 +08:00
parent 0c097498bb
commit 74708dc02f
3 changed files with 7 additions and 3 deletions

View File

@@ -15,6 +15,7 @@ import (
) )
const ( const (
enableFragmentPool = false
minMemoryFragmentPoolItemSize = 8 << 10 minMemoryFragmentPoolItemSize = 8 << 10
maxMemoryFragmentPoolItemSize = 128 << 20 maxMemoryFragmentPoolItemSize = 128 << 20
maxItemsInMemoryFragmentPoolBucket = 1024 maxItemsInMemoryFragmentPoolBucket = 1024

View File

@@ -517,7 +517,7 @@ func (this *MemoryStorage) flushItem(key string) {
_ = this.Delete(key) _ = this.Delete(key)
// 重用内存,前提是确保内存不再被引用 // 重用内存,前提是确保内存不再被引用
if ok && item.IsDone && !item.isReferring && len(item.BodyValue) > 0 { if enableFragmentPool && ok && item.IsDone && !item.isReferring && len(item.BodyValue) > 0 {
SharedFragmentMemoryPool.Put(item.BodyValue) SharedFragmentMemoryPool.Put(item.BodyValue)
} }
}() }()

View File

@@ -32,7 +32,9 @@ func NewMemoryWriter(memoryStorage *MemoryStorage, key string, expiredAt int64,
ModifiedAt: fasttime.Now().Unix(), ModifiedAt: fasttime.Now().Unix(),
Status: status, Status: status,
} }
if expectedBodySize > 0 && expectedBodySize <= maxMemoryFragmentPoolItemSize { if enableFragmentPool &&
expectedBodySize > 0 &&
expectedBodySize <= maxMemoryFragmentPoolItemSize {
bodyBytes, ok := SharedFragmentMemoryPool.Get(expectedBodySize) // try to reuse memory bodyBytes, ok := SharedFragmentMemoryPool.Get(expectedBodySize) // try to reuse memory
if ok { if ok {
valueItem.BodyValue = bodyBytes valueItem.BodyValue = bodyBytes
@@ -168,7 +170,8 @@ func (this *MemoryWriter) Discard() error {
this.storage.locker.Lock() this.storage.locker.Lock()
delete(this.storage.valuesMap, this.hash) delete(this.storage.valuesMap, this.hash)
if this.item != nil && if enableFragmentPool &&
this.item != nil &&
!this.item.isReferring && !this.item.isReferring &&
cap(this.item.BodyValue) >= minMemoryFragmentPoolItemSize { cap(this.item.BodyValue) >= minMemoryFragmentPoolItemSize {
SharedFragmentMemoryPool.Put(this.item.BodyValue) SharedFragmentMemoryPool.Put(this.item.BodyValue)