当前位置: 首页 > 面试题库 >

Java本机内存使用情况

澹台玉石
2023-03-14
问题内容

有什么工具可以知道我的Java应用程序已使用了多少个本机内存?我的应用程序内存不足:当前设置是:-Xmx900m

计算机,Windows 2003 Server 32位,RAM 4GB。

还在Windows上将boot.ini更改为/ 3GB,会有什么不同吗?如果设置为Xmx900m,则可以为此进程分配多少最大本机内存?是1100m吗?


问题答案:

(就我而言,我使用的是Java 8)

添加到命令行: -XX:NativeMemoryTracking=summary

然后启动 jcmd <PID> VM.native_memory

您应该得到这样的内容:

Total: reserved=3863657KB, committed=1679977KB
-                 Java Heap (reserved=1843200KB, committed=824320KB)
                            (mmap: reserved=1843200KB, committed=824320KB)

-                     Class (reserved=1311974KB, committed=298726KB)
                            (classes #52579)
                            (malloc=5350KB #76340) 
                            (mmap: reserved=1306624KB, committed=293376KB)

-                    Thread (reserved=263278KB, committed=263278KB)
                            (thread #256)
                            (stack: reserved=262140KB, committed=262140KB)
                            (malloc=839KB #1280) 
                            (arena=299KB #510)

-                      Code (reserved=278521KB, committed=164773KB)
                            (malloc=28921KB #37983) 
                            (mmap: reserved=249600KB, committed=135852KB)

-                        GC (reserved=114897KB, committed=77093KB)
                            (malloc=13729KB #67925) 
                            (mmap: reserved=101168KB, committed=63364KB)

-                  Compiler (reserved=461KB, committed=461KB)
                            (malloc=330KB #1138) 
                            (arena=131KB #3)

-                  Internal (reserved=13877KB, committed=13877KB)
                            (malloc=13845KB #72978) 
                            (mmap: reserved=32KB, committed=32KB)

-                    Symbol (reserved=28871KB, committed=28871KB)
                            (malloc=24740KB #275452) 
                            (arena=4131KB #1)

-    Native Memory Tracking (reserved=8393KB, committed=8393KB)
                            (malloc=45KB #523) 
                            (tracking overhead=8348KB)

-               Arena Chunk (reserved=184KB, committed=184KB)
                            (malloc=184KB)

有关更多信息,请参见https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr007.html



 类似资料:
  • 问题内容: 是否有一个准则来估计a消耗的内存量? 寻找类似于这些准则的估计内存使用情况的东西。 问题答案: 如果您查看源代码中的字段,则有: 的评论说 用于存储规范的字符串表示形式(如果已计算)。 假设您不调用,它将保留为零字节。因此是(8 + 4 + 4)= 16个字节+ 。 本身是4 + 4 + 4 + 4 + 4 = 20字节+ 。 20 + 16总共提供了36个字节加上大小,该大小始终是表

  • 问题内容: 扩展基类时,Java中的内存使用情况如何。 子类是否包含基类的实例(具有其自身的开销和全部开销),还是仅具有其自身的16字节的开销? 那么,更具体地说,Bar实例的内存使用量是多少? 是吗 要不就 问题答案: 没有双重开销。 Java将采用该类,超类,计算所有字段所需的空间,并为一个实例分配所需的空间。 仅从内存的角度来看,根本不存在超类的概念,有Foo的实例仅需要一个int的内存,而

  • 问题内容: 我想用Java监视以下系统信息: 当前的CPU使用率*(百分比) 可用内存 (可用/总计) 可用磁盘空间(可用/总) 请注意,我的意思是整个系统可用的整体内存,而不仅仅是JVM。 我正在寻找一种不依赖于我自己的调用外部程序或使用JNI的代码的跨平台解决方案(Linux,Mac和Windows)。尽管这些是可行的选择,但如果有人已经有了更好的解决方案,我宁愿自己不要维护特定于操作系统的代

  • 我有一个很小的java控制台应用程序,我想在内存使用方面进行优化。它是在Xmx设置为仅64MB的情况下运行的。根据不同的监视工具(htop、ps、pmap、Dynatrace)显示进程的总体内存使用量超过250MB。我主要在Ubuntu18上运行它(也在其他操作系统上测试)。 我使用了-xx:nativeMemoryTracking,java param和jcmd的本地内存跟踪,以找出为什么在堆之

  • Java1.8。0_131 Windows Server 2012 R2。 “-Xmx=9000m”。但是Windows任务管理器显示java进程使用的内存超过14GB。 NMT显示“内部”消耗超过4.5 GB的内存。为什么会出现这种情况?我知道为本机内存定义空间不是Java功能。但是有什么方法可以限制“内部”内存吗? 总计:保留=15782485KB,提交=14653869KB-Java堆(保留

  • 问题内容: 我目前正在测试将密钥插入数据库Redis(在本地)中。我有超过500万个密钥,而且我只有4GB的RAM,所以一时我达到了RAM的容量并交换了数据(并且我的PC掉了)。 我的问题是:如何在具有Redis数据库的计算机上监视内存使用情况,并以此方式发出警报,不再在Redis数据库中插入某些密钥? 谢谢。 问题答案: 关于内存使用情况,建议您查看redis.io 常见问题解答以及有关将red