此内存使用模式是否表明我的 Java 应用程序泄漏了内存?

2024-06-09

我有一个 Java 应用程序,它等待用户按键然后运行任务。一旦完成,它就会返回并再次等待。我正在使用 jvisualvm 查看此应用程序的内存配置文件,它显示出不断增加的模式。

承诺内存大小为 16MB。 应用程序启动时使用的内存为 2.7 MB,然后随着中间下降(垃圾收集)而攀升。一旦这种锯齿模式接近 16MB,内存使用量就会大幅下降,下降到接近 4MB。不过,这个主要下降点一直在增加。 4MB、6MB、8MB。使用量从未超过 16 MB,但整个锯齿模式正在向 16 MB 攀升。

我有内存泄漏吗?

由于这是我第一次在 StackOverflow 上发帖,因此没有足够的声誉来发布图像。


现代 SunOracle JVM 使用所谓的分代垃圾收集器:

  1. 当收集器运行时,它首先尝试部分收集,仅释放最近分配的内存
  2. 最近创建的仍处于活动状态的对象会被“升级”
  3. 一旦一个对象被提升了几次,即使它准备好被收集,它也不会再被部分收集清理。
  4. 这些对象称为“tenured”,只有在需要完整收集时才会被清理,以便为程序继续运行留出足够的空间

因此,基本上,程序中保留足够长的时间而被快速“部分”收集错过的部分将一直保留,直到 JVM 决定必须执行完整收集。如果你让它持续足够长的时间,你最终应该会看到完整的收集发生,并且使用量下降回原来的起点。

如果这种情况从未发生,并且您最终得到内存不足异常,那么您可能存在内存泄漏:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

此内存使用模式是否表明我的 Java 应用程序泄漏了内存? 的相关文章

随机推荐

  • 使用 asp.net mvc 4 的简单注入器,从另一个程序集加载控制器

    我正在开发一个 asp net mvc 4 站点 使用 Simple Injector 作为 Ioc 工具 这将是一个可插拔的架构 某些控制器和视图位于另一个程序集中 另一个 mvc4 应用程序 Plugin Web dll 从主应用程序中
  • Laravel 5.4 合并两个集合

    所以我有两个收藏 sales and costs 现在我需要将它们合并为我的一个集合foreach状况 我不确定是否可以在一个集合中使用两个集合foreach 原始查询 Raw MySQL Queries for Sales total s
  • 我可以向函数添加属性以防止重入吗?

    目前 我有一些如下所示的功能 private bool inFunction1 false public void function1 if inFunction1 return inFunction1 true do stuff whic
  • 位图 getWidth 返回错误值

    我的 android 应用程序可绘制文件夹中有一张 jpg 图像 分辨率为 1000x600 我像这样将该图像加载到位图 Bitmap bitMap BitmapFactory decodeResource getResources R d
  • Asp.net 发布构建与调试构建

    如何确定我的应用程序是否编译为 发布 而不是 调试 我转到 VS 2008 项目属性 gt 构建并将配置从调试设置为发布 但我发现没有任何变化 这是一个 ASP NET 项目 HttpContext IsDebuggingEnabled h
  • CMake:如何更改单个目标的编译器

    我有使用交叉编译器的嵌入式项目 我想介绍一下Google测试 用原生GCC编译器编译 另外使用 CTC 编译器构建一些单元测试目标 Briefly 我有 3 个不同的目标并用 3 个不同的编译器编译它们 如何表达它CMakeLists tx
  • 使用 lambda 从数组中选择每隔一个元素[重复]

    这个问题在这里已经有答案了 C 4 0 如何使用 lambda 表达式完成以下操作 int a new int 8 0 1 2 3 4 5 6 7 Now fetch every second element so that we get
  • Shader的功能参数表现

    我试图了解如何在着色器语言中实现传递参数 我读过几篇文章和文档 但仍然有一些疑问 特别是我试图理解与C 函数调用 特别强调性能 之间略有差异HLSL Cg and GLSL但我猜下划线的实现非常相似 到目前为止我所理解的 除非另有说明 函数
  • 渲染时捕获 NoReverseMatch:未找到带有参数 '(1,)' 和关键字参数 '{}' 的 '' 反转

    我的看法 def display request feed SoukFeedMaster objects filter person request user return render request soukfeed display h
  • RxJava:如何多播 Completable?

    我有一个方法返回一个Completable我希望它是multicasted因为任何第二个订阅者都不应该重新执行该方法 而是应该获得相同的旧发出值 我用它实现了replay autoConnect 如下并按预期工作 public Comple
  • 空序列的算术平均值是多少?

    免责声明 不 我没有找到任何明显的答案 这与我的预期相反 在寻找代码示例时 算术平均值 我可以通过谷歌找到的前几个例子似乎是这样定义的 空序列生成的平均值为0 0 eg here https rosettacode org wiki Ave
  • 每 2 秒打印一次从 1 到 10 的数字

    我想每 n 秒后打印一次数字 并且根据一些条件我正在更改计时器以及停止打印功能 我已经这样做了 var myfunc value 1 running false timer 1000 start function this running
  • 在css3动画中添加延迟时间

    我只是给div设置了一个动画 就成功了 现在我想要证明它 因为它的延迟太短了 那么如何添加动画 0 到25 和动画 25 到50 之间的延迟时间 这是代码 flow position absolute webkit animation my
  • SingleResult.Create 在空 IQueryable 上的 Odata 序列化错误

    我正在使用 OData v4 并尝试让一个非常简单的控制器工作 控制器 public class ProductController ODataController readonly MasterDataEntities db new Ma
  • Elixir 中的斜线符号是什么意思?

    在 Elixir 文档中 他们继续使用带有斜杠的奇怪符号 例如 is boolean 1 IO puts 1 String length 1 is function 2 2 我只是猜测 但我认为它指的是数量 但如果是这样的话 为什么文档中没
  • Three.js 变换控件 - 如何仅显示两个箭头

    我必须仅使用场景中的变换控件在 XY 方向上显示两个箭头或变换对象 通常 我会问您到目前为止尝试过什么 但是没有关于此控件的文档 如果您不知道自己在寻找什么 那么它是一个相当复杂的对象 需要深入研究 考虑你有一个TranformContro
  • 创建目录中多个文本文件的字数统计字典

    我在 word count directory 函数中使用 build dict 函数来创建目录中三个文件的字数统计字典 我想创建三个字典 每个文件一次一个 并更新以前的字典 我的代码创建一个字典 word count 它同时组合所有三个字
  • iOS OpenGL ES 2.0:离屏渲染并将结果保存到 UIImage

    我正在使用 OpenGL ES 渲染一些特殊效果 我不想向用户显示这些效果 我只想将结果保存为 UIImage 有人可以帮助我吗 这是我正在使用的代码 我可以获得一个包含我使用的红色透明颜色的图像 但没有显示几何图形 import Rend
  • 如何将发布档案转换为 git repo

    我有一个发布档案列表 MyProject 0 9 zip MyProject 1 0 zip MyProject 1 3 tar gz MyProject 2 0 tar gz 每个文件都包含一个与存档同名的文件夹 不带文件扩展名 其中包含
  • 此内存使用模式是否表明我的 Java 应用程序泄漏了内存?

    我有一个 Java 应用程序 它等待用户按键然后运行任务 一旦完成 它就会返回并再次等待 我正在使用 jvisualvm 查看此应用程序的内存配置文件 它显示出不断增加的模式 承诺内存大小为 16MB 应用程序启动时使用的内存为 2 7 M