当前位置: 首页 > 知识库问答 >
问题:

启用Java本地内存跟踪(NMT)会对性能产生哪些影响?

昌乐
2023-03-14
root@myHost:/# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

是否可以/允许/建议在生产中始终在“细节”级别启用NMT:

-XX:NativeMemoryTracking=detail

共有1个答案

梁丘诚
2023-03-14

来自Oracle本地内存跟踪for Java8文档:

获取详细数据:要获取本机内存使用情况的更详细视图,可以使用命令行选项-xx:nativemeMoryTracking=detail启动JVM。这将准确地跟踪哪些方法分配的内存最多。启用NMT将导致5-10%的JVM性能下降,NMT的内存使用量将在所有malloc内存中添加2个字作为malloc头。NMT内存使用情况也由NMT跟踪。

一旦启用了NMT,vm.native_memory的jcmd输出实际上将记录由于启用了NMT而导致的内存分配开销:

#jcmd 25 VM.native_memory
25:

Native Memory Tracking:

Total: reserved=2724013KB, committed=1526785KB
-                 Java Heap (reserved=1048576KB, committed=1048576KB)
                        (mmap: reserved=1048576KB, committed=1048576KB)
...

    Native Memory Tracking (reserved=6004KB, committed=6004KB)
                        (malloc=384KB #6040)
                        (tracking overhead=5621KB)
 类似资料:
  • 使用时,是否有需要考虑的性能影响? 我正在编写一个从目录检索文件的查询,这就是查询: 那么,在决定进行这样的转换时,是否应该考虑某种性能影响--还是只在处理大量文件时才考虑?这是一个可以忽略不计的转换吗?

  • 问题内容: 我怀疑Java代码中未使用的导入和未使用的对象是否会对性能产生影响? 假设一个对象已初始化并且从未使用过,会发生什么?未使用进口的成本是多少 问题答案: 这是一个非常普遍的问题。 像大多数性能问题一样,最好的方法是编写最清晰,最简单的代码,因为这样可以提高代码的可维护性,并有助于确保代码即使更改后也能正常运行。(聪明/难以理解/不必要地开始,详细的代码可以快速运行,但是由于只是凡人而改

  • 我对“关闭”我的程序的abort术语的术语和矛盾感到有点困惑,从该函数的描述来看,它说析构函数和开放资源可能分别不被调用/关闭。那么,在调用abort()之后,我的程序是否仍在运行并且存在内存泄漏或者资源仍然打开?

  • 本文向大家介绍JavaScript 事件对内存和性能的影响,包括了JavaScript 事件对内存和性能的影响的使用技巧和注意事项,需要的朋友参考一下 虽说事件处理程序可以为现代 Web 页面添加很强的交互能力,但是不分青红皂白就添加大量的事件处理程序绝对是一种愚蠢的行为。 我们来分析一下:事件处理程序本质上是一种函数,是一种对象,存放在内存中,设置大量的事件处理程序会使内存中的对象变多,Web

  • 本文向大家介绍详解JVM中的本机内存跟踪,包括了详解JVM中的本机内存跟踪的使用技巧和注意事项,需要的朋友参考一下 1.概述 有没有想过为什么Java应用程序通过众所周知的-Xms和-Xmx调优标志消耗的内存比指定数量多得多?出于各种原因和可能的优化,JVM可以分配额外的本机内存。这些额外的分配最终会使消耗的内存超出-Xmx限制。 在本教程中,我们将列举JVM中的一些常见内存分配源,以及它们的大小

  • 问题内容: 我正在尝试构建一个像素,以跟踪用户访问时所在的当前URL。我可以使用JS(首选)或1x1图像像素。使用JS,我假设我需要对PHP脚本运行AJAX请求以捕获所需的信息,而对于图像像素,获取当前URL时遇到问题。 我还考虑过使用JS对当前URL进行URL编码,然后将带有编码后的当前URL的图像像素作为查询字符串动态放置到PHP脚本中,但是我可能会变得很长。 如果我要走AJAX路线,可以使用