Skip to content

getOccupiedMem returns wrong value #24975

Open
@epikur-io

Description

@epikur-io

Nim Version

Nim Compiler Version 2.2.4 [Linux: amd64]
Compiled at 2025-04-22
Copyright (c) 2006-2025 by Andreas Rumpf

git hash: f7145dd
active boot switches: -d:release

Description

The following example program just appends objects to a sequence. When checking the amount of occupied memory by calling getOccupiedMem it always returns 0 byte even if gigabytes have been allocated. Strangely when using --mm:refc the problem doesn't occur.

Example code

import std/[strutils, strformat]

type
    Obj = object of RootObj
        name: string

var l = newSeq[Obj]()
var i = 0
while true:
  var t: Obj = Obj(name: fmt"object #{i}")
  l.add(t)
  i.inc
  if i mod 10_0000 == 0: 
    echo $i & ": occupied mem " & $formatSize(getOccupiedMem())
    # ...
    # 4200000: Occupied mem 0B
    # 4300000: Occupied mem 0B
    # 4400000: Occupied mem 0B
    # 4500000: Occupied mem 0B
    # 4600000: Occupied mem 0B
    # ...

Current Output

318867: occupied mem 0B
318868: occupied mem 0B
318869: occupied mem 0B
318870: occupied mem 0B
318871: occupied mem 0B
318872: occupied mem 0B
318873: occupied mem 0B
318874: occupied mem 0B
318875: occupied mem 0B
318876: occupied mem 0B
318877: occupied mem 0B
318878: occupied mem 0B
318879: occupied mem 0B
318880: occupied mem 0B

Expected Output

62287: occupied mem 3.952MiB
62288: occupied mem 3.953MiB
62289: occupied mem 3.954MiB
62290: occupied mem 3.954MiB
62291: occupied mem 3.955MiB
62292: occupied mem 3.956MiB
62293: occupied mem 3.957MiB
62294: occupied mem 3.957MiB
62295: occupied mem 3.958MiB
62296: occupied mem 3.959MiB

Known Workarounds

No response

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions