我正在尝试在Docker容器中配置Java应用程序的内存使用情况。我正在使用Java本机内存跟踪。我的问题是,我应该只关注已提交的总内存,还是应该关注总保留内存?
当我的docker内存限制为1500mb并且堆大约是它的%35时,nmt如下所示:
Total: reserved=2226606KB, committed=873262KB
- Java Heap (reserved=538624KB, committed=447488KB)
(mmap: reserved=538624KB, committed=447488KB)
- Class (reserved=1168642KB, committed=139334KB)
(classes #23623)
(malloc=3330KB #33812)
(mmap: reserved=1165312KB, committed=136004KB)
- Thread (reserved=90735KB, committed=90735KB)
(thread #89)
(stack: reserved=90346KB, committed=90346KB)
(malloc=286KB #446)
(arena=103KB #174)
- Code (reserved=253962KB, committed=25490KB)
(malloc=4362KB #8491)
(mmap: reserved=249600KB, committed=21128KB)
- GC (reserved=62693KB, committed=59317KB)
(malloc=9937KB #105744)
(mmap: reserved=52756KB, committed=49380KB)
- Compiler (reserved=234KB, committed=234KB)
(malloc=103KB #1032)
(arena=131KB #5)
- Internal (reserved=72800KB, committed=72800KB)
(malloc=72768KB #32496)
(mmap: reserved=32KB, committed=32KB)
- Symbol (reserved=30254KB, committed=30254KB)
(malloc=27529KB #291934)
(arena=2725KB #1)
- Native Memory Tracking (reserved=7432KB, committed=7432KB)
(malloc=18KB #219)
(tracking overhead=7413KB)
- Arena Chunk (reserved=178KB, committed=178KB)
(malloc=178KB)
- Unknown (reserved=1052KB, committed=0KB)
(mmap: reserved=1052KB, committed=0KB)
/ #
在这种情况下,对于450mb / 550mb的堆内存,java实际上使用的是870mb内存,据我了解,2.2gb是最大的潜在内存使用量。 在这一点上,我是否应该尝试增加docker内存以解决潜在的oom问题或查看870mb的已提交总内存,我是否应该确定自己安全?