Why mongo instance memory so high?

verison:4.0.9
replicaset,3 node
primary node 's max memory:4GB
but info from mongostat output follows:
image

show dbs output:
PRIMARY> show dbs;
admin 0.000GB
config 0.000GB
xxx 0.013GB
local 0.342GB

why primary instance 's memory so high?

PRIMARY> db.serverStatus().tcmalloc
{
        "generic" : {
                "current_allocated_bytes" : NumberLong("36921151424"),
                "heap_size" : NumberLong("40264519680")
        },
        "tcmalloc" : {
                "pageheap_free_bytes" : NumberLong(1460367360),
                "pageheap_unmapped_bytes" : NumberLong(1508446208),
                "max_total_thread_cache_bytes" : NumberLong(1073741824),
                "current_total_thread_cache_bytes" : 11085832,
                "total_free_bytes" : 374554688,
                "central_cache_free_bytes" : 358786648,
                "transfer_cache_free_bytes" : 4682208,
                "thread_cache_free_bytes" : 11085832,
                "aggressive_memory_decommit" : 0,
                "pageheap_committed_bytes" : NumberLong("38756073472"),
                "pageheap_scavenge_count" : 1558237,
                "pageheap_commit_count" : 4035069,
                "pageheap_total_commit_bytes" : NumberLong("681721012224"),
                "pageheap_decommit_count" : 1558514,
                "pageheap_total_decommit_bytes" : NumberLong("642964938752"),
                "pageheap_reserve_count" : 20923,
                "pageheap_total_reserve_bytes" : NumberLong("40264519680"),
                "spinlock_total_delay_ns" : NumberLong("10426415504"),
                "formattedString" : "------------------------------------------------\nMALLOC:    36921152000 (35210.8 MiB) Bytes in use by application\nMALLOC: +   1460367360 ( 1392.7 MiB) Bytes in page heap freelist\nMALLOC: +    358786648 (  342.2 MiB) Bytes in central cache freelist\nMALLOC: +      4682208 (    4.5 MiB) Bytes in transfer cache freelist\nMALLOC: +     11085256 (   10.6 MiB) Bytes in thread cache freelists\nMALLOC: +    336584960 (  321.0 MiB) Bytes in malloc metadata\nMALLOC:   ------------\nMALLOC: =  39092658432 (37281.7 MiB) Actual memory used (physical + swap)\nMALLOC: +   1508446208 ( 1438.6 MiB) Bytes released to OS (aka unmapped)\nMALLOC:   ------------\nMALLOC: =  40601104640 (38720.2 MiB) Virtual address space used\nMALLOC:\nMALLOC:        5221570              Spans in use\nMALLOC:             82              Thread heaps in use\nMALLOC:           4096              Tcmalloc page size\n------------------------------------------------\nCall ReleaseFreeMemory() to release freelist memory to the OS (via madvise()).\nBytes released to the OS take up virtual address space but no physical memory.\n"
        
7fc4f4f24000-7fce68a61000 rw-p 00000000 00:00 0 
Size:           39644404 kB
Rss:            37846436 kB
Pss:            37846436 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         0 kB
Private_Dirty:  37846436 kB
Referenced:     37278820 kB
Anonymous:      37846436 kB
AnonHugePages:         0 kB
Swap:                  0 kB
KernelPageSize:        4 kB
MMUPageSize:           4 kB
{
        "application threads page read from disk to cache count" : 146,
        "application threads page read from disk to cache time (usecs)" : 6604,
        "application threads page write from cache to disk count" : 17030483,
        "application threads page write from cache to disk time (usecs)" : 698950227,
        "bytes belonging to page images in the cache" : 3638217,
        "bytes belonging to the cache overflow table in the cache" : 182,
        "bytes currently in the cache" : 2252442633,
        "bytes dirty in the cache cumulative" : NumberLong("18672485991968"),
        "bytes not belonging to page images in the cache" : 2248804415,
        "bytes read into cache" : 3367237,
        "bytes written from cache" : 125547076860,
        "cache overflow cursor application thread wait time (usecs)" : 0,
        "cache overflow cursor internal thread wait time (usecs)" : 0,
        "cache overflow score" : 57,
        "cache overflow table entries" : 0,
        "cache overflow table insert calls" : 0,
        "cache overflow table remove calls" : 0,
        "checkpoint blocked page eviction" : 717,
        "eviction calls to get a page" : 7284869,
        "eviction calls to get a page found queue empty" : 7284049,
        "eviction calls to get a page found queue empty after locking" : 0,
        "eviction currently operating in aggressive mode" : 0,
        "eviction empty score" : 0,
        "eviction passes of a file" : 0,
        "eviction server candidate queue empty when topping up" : 0,
        "eviction server candidate queue not empty when topping up" : 0,
        "eviction server evicting pages" : 0,
        "eviction server slept, because we did not make progress with eviction" : 28068,
        "eviction server unable to reach eviction goal" : 0,
        "eviction state" : 32,
        "eviction walk target pages histogram - 0-9" : 0,
        "eviction walk target pages histogram - 10-31" : 0,
        "eviction walk target pages histogram - 128 and higher" : 0,
        "eviction walk target pages histogram - 32-63" : 0,
        "eviction walk target pages histogram - 64-128" : 0,
        "eviction walks abandoned" : 0,
        "eviction walks gave up because they restarted their walk twice" : 0,
        "eviction walks gave up because they saw too many pages and found no candidates" : 0,
        "eviction walks gave up because they saw too many pages and found too few candidates" : 0,
        "eviction walks reached end of tree" : 0,
        "eviction walks started from root of tree" : 0,
        "eviction walks started from saved location in tree" : 0,
        "eviction worker thread active" : 4,
        "eviction worker thread created" : 0,
        "eviction worker thread evicting pages" : 164,
        "eviction worker thread removed" : 0,
        "eviction worker thread stable number" : 0,
        "failed eviction of pages that exceeded the in-memory maximum count" : 7,
        "failed eviction of pages that exceeded the in-memory maximum time (usecs)" : 48,
        "files with active eviction walks" : 0,
        "files with new eviction walks started" : 0,
        "force re-tuning of eviction workers once in a while" : 0,
        "hazard pointer blocked page eviction" : 7,
        "hazard pointer check calls" : 145606,
        "hazard pointer check entries walked" : 484,
        "hazard pointer maximum array length" : 1,
        "in-memory page passed criteria to be split" : 591,
        "in-memory page splits" : 282,
        "internal pages evicted" : 0,
        "internal pages split during eviction" : 0,
        "leaf pages split during eviction" : 2,
        "maximum bytes configured" : 4294967296,
        "maximum page size at eviction" : 0,
        "modified pages evicted" : 145331,
        "modified pages evicted by application threads" : 0,
        "operations timed out waiting for space in cache" : 0,
        "overflow pages read into cache" : 0,
        "page split during eviction deepened the tree" : 0,
        "page written requiring cache overflow records" : 0,
        "pages currently held in the cache" : 526,
        "pages evicted because they exceeded the in-memory maximum count" : 145406,
        "pages evicted because they exceeded the in-memory maximum time (usecs)" : 2618210631,
        "pages evicted because they had chains of deleted items count" : 29,
        "pages evicted because they had chains of deleted items time (usecs)" : 37391,
        "pages evicted by application threads" : 0,
        "pages queued for eviction" : 0,
        "pages queued for urgent eviction" : 164,
        "pages queued for urgent eviction during walk" : 0,
        "pages read into cache" : 159,
        "pages read into cache after truncate" : 122,
        "pages read into cache after truncate in prepare state" : 0,
        "pages read into cache requiring cache overflow entries" : 0,
        "pages read into cache requiring cache overflow for checkpoint" : 0,
        "pages read into cache skipping older cache overflow entries" : 0,
        "pages read into cache with skipped cache overflow entries needed later" : 0,
        "pages read into cache with skipped cache overflow entries needed later by checkpoint" : 0,
        "pages requested from the cache" : 1275199575,
        "pages seen by eviction walk" : 0,
        "pages selected for eviction unable to be evicted" : 7,
        "pages walked for eviction" : 0,
        "pages written from cache" : 17030484,
        "pages written requiring in-memory restoration" : 145166,
        "percentage overhead" : 8,
        "tracked bytes belonging to internal pages in the cache" : 63250,
        "tracked bytes belonging to leaf pages in the cache" : 2252379383,
        "tracked dirty bytes in the cache" : 2704172,
        "tracked dirty pages in the cache" : 1,
        "unmodified pages evicted" : 0
}

“bytes currently in the cache” : 2252442633,

Hi @NOVALUE_wendywong , can you let me know if you had any findings in this case?