forked from TrueCloudLab/frostfs-node
[#425] object: Do not store large slices in pool
Dynamically growing an unbounded buffers can cause a large amount of memory to be pinned and never be freed. Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
405e17b2ec
commit
25bedab91a
1 changed files with 7 additions and 1 deletions
|
@ -4,7 +4,10 @@ import (
|
|||
"sync"
|
||||
)
|
||||
|
||||
const defaultAllocSize = 1024
|
||||
const (
|
||||
defaultAllocSize = 1024
|
||||
poolSliceMaxSize = 128 * 1024
|
||||
)
|
||||
|
||||
type payload struct {
|
||||
Data []byte
|
||||
|
@ -19,6 +22,9 @@ func getPayload() *payload {
|
|||
}
|
||||
|
||||
func putPayload(p *payload) {
|
||||
if cap(p.Data) > poolSliceMaxSize {
|
||||
return
|
||||
}
|
||||
p.Data = p.Data[:0]
|
||||
putBytesPool.Put(p)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue