Memory alloc mismatch during db opening

package main

import (
    "fmt"
    "os"
    "runtime"
    "time"

    "github.com/dgraph-io/badger"
)

func main() {
    // Create or open Badger DB
    path := "./data"
    opts := badger.DefaultOptions(path).
        WithMaxTableSize(1 << 20).          // 1 MiB memtable (default was 64 MiB)
        WithValueLogFileSize(1 << 26).      // 64 MiB value log
        WithNumMemtables(1).                // Limit to 1 memtable
        WithValueLogLoadingMode(0).         // FileIO mode (not mmap)
        WithSyncWrites(false)               // Disable sync for testing

    db, err := badger.Open(opts)
    if err != nil {
        panic(err)
    }
    defer db.Close()

    // Monitor memory usage
    opened := false
    for i := 0; i < 5; i++ {
        time.Sleep(5 * time.Second)
        printMemUsage()
        if !opened {
            fmt.Println("Opening Badger DB...")
            opened = true
        }
    }
}

// printMemUsage outputs detailed memory stats
func printMemUsage() {
    var m runtime.MemStats
    runtime.ReadMemStats(&m)

    // Resident memory via /proc/self/stat (Linux only)
    rss := getRSS()

    fmt.Printf("Alloc = %v MiB", bToMb(m.Alloc))
    fmt.Printf("\tTotalAlloc = %v MiB", bToMb(m.TotalAlloc))
    fmt.Printf("\tSys = %v MiB", bToMb(m.Sys))
    fmt.Printf("\tRSS = %v MiB", bToMb(uint64(rss)))
    fmt.Printf("\tNumGC = %v\n", m.NumGC)
}

func bToMb(b uint64) uint64 {
    return b / 1024 / 1024
}

// getRSS retrieves resident memory size (Linux-specific)
func getRSS() int64 {
    if runtime.GOOS != "linux" {
        return 0 // Fallback for non-Linux systems
    }
    data, err := os.ReadFile("/proc/self/stat")
    if err != nil {
        return 0
    }
    var ignore int
    var rss int64
    // RSS is the 24th field in /proc/self/stat
    _, err = fmt.Sscanf(string(data), "%d %s %c %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
        &ignore, new(string), new(byte), &ignore, &ignore, &ignore, &ignore, &ignore, &ignore, &ignore,
        &ignore, &ignore, &ignore, &ignore, &ignore, &ignore, &ignore, &ignore, &ignore, &ignore,
        &ignore, &ignore, &ignore, &rss)
    if err != nil {
        return 0
    }
    return rss * os.Getpagesize() // Convert pages to bytes
}