pool_test.go 497 B

12345678910111213141516171819202122232425262728293031
  1. package pool_test
  2. import (
  3. "fmt"
  4. "runtime"
  5. "sync"
  6. "testing"
  7. "time"
  8. )
  9. func TestPool1(t *testing.T) {
  10. p := &sync.Pool{
  11. New: func() any {
  12. return make([]map[string]any, 0, 100)
  13. },
  14. }
  15. ms := p.Get().([]map[string]any)
  16. for i := 1; i < 100; i++ {
  17. m := map[string]any{"": i}
  18. runtime.SetFinalizer(&m, func(o *map[string]any) {
  19. fmt.Println("Object ", (*o)[""], " has been garbage collected")
  20. })
  21. ms = append(ms, m)
  22. }
  23. p.Put(ms[:0])
  24. runtime.GC()
  25. time.Sleep(1 * time.Minute)
  26. }