首页 > 解决方案 > Java中的内存类别“生成的代码”到底是什么?

问题描述

我正在使用jcmdwithVM.native_memory summary.diff scale=MB来了解为什么我的 JVM 会随着时间的推移使用越来越多的内存。输出是这样的:

Native Memory Tracking:

Total: reserved=1541MB +19MB, committed=290MB +45MB


-                 Java Heap (reserved=76MB, committed=48MB)
                            (mmap: reserved=76MB, committed=48MB)

-                     Class (reserved=1093MB +11MB, committed=77MB +11MB)
                            (classes #11008 +980)
                            (malloc=3MB +1MB #22851 +7789)
                            (mmap: reserved=1090MB +10MB, committed=74MB +11MB)

-                    Thread (reserved=43MB +1MB, committed=43MB +1MB)
                            (thread #44 +1)
                            (stack: reserved=43MB +1MB, committed=43MB +1MB)

-                      Code (reserved=251MB +5MB, committed=45MB +30MB)
                            (malloc=7MB +5MB #11790 +7595)
                            (mmap: reserved=244MB, committed=37MB +25MB)

-                        GC (reserved=53MB, committed=52MB)
                            (malloc=18MB #65380 +18712)
                            (mmap: reserved=35MB, committed=34MB)

-                  Internal (reserved=3MB, committed=3MB)
                            (malloc=3MB #20304 +5733)

-                    Symbol (reserved=18MB +1MB, committed=18MB +1MB)
                            (malloc=16MB +1MB #134791 +6616)
                            (arena=2MB #1)

-    Native Memory Tracking (reserved=4MB +1MB, committed=4MB +1MB)
                            (tracking overhead=4MB +1MB)

如您所见,code自从我启动 JVM 以来,该类别使用了 +30MB。根据 https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr022.html#BABHIFJC

此类别表示生成的代码

不幸的是,我没有找到更多关于它的细节。什么是“生成代码”?

我在我的代码中使用了一个经常使用的注释。那可能是“生成的代码”吗?

谢谢!

标签: javamemory

解决方案


推荐阅读