java - 我怎么知道 Java 有泄漏?

标签 java memory-leaks

我正在使用 Netbeans 分析器运行我的应用程序,并且 char 类型似乎非常活跃。我看到代数一直达到 180 代,然后下降到 80 代,最后似乎平均为 160 代。

这很难说,因为它是一个使用 JDBC、Hibernate 和连接池的自定义 TCP/IP 服务器应用程序。

1- 如果代数上升或下降,可以认为没问题吗?只有一直往上往上走,不往下走,才可能有问题?

2- Netbeans 生成图一直在上升。在我的压力测试结束时,它是 20000 代。图表是一段时间内的总和吗?我很困惑,因为在查看实时结果时,如上所述,各代的 char 类型会上下变化。

3- 通过从分析器手动调用垃圾收集器,内存似乎又下降了。所以我想这也可以吗?

最佳答案

  • 1) 是的。由于所有构造的实例,它会上升,而当垃圾收集器启动时,它会下降。
  • 3) 嗯,是的,你可以手工完成 1 件事。但这应该不是必要的。

可以通过查看一段时间内的最小量来识别内存泄漏。如果您继续运行相同的代码,每次 GC 运行时都应该几乎相同。

如果您输入代码的不同部分,随着类的加载以及可能的静态数据的构造,它可能会增长一点。

事实上,在不知道所采用的代码路径的情况下很难识别泄漏。我遇到过泄漏,直到处理了大约 100000 条消息后才显现出来,并且在运行几周后才出现问题。

另请参阅This SO question on identifying those leaks .

关于java - 我怎么知道 Java 有泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3437779/

相关文章:

c# - 使用大的静态变量是个坏主意吗?

java - 使用 tsVector 在 NativeQuery 中设置参数

java - 为什么 Scala 构建自己的 ForkJoinPool 而不是使用 java.util.concurrent.ForkJoinPool#commonPool?

java - Google GTM 依赖错误

c++ - 返回 const 引用或引用的方法会导致内存泄漏吗?

c# - String to Char* 无内存泄漏

java - 尝试计算 BMI,但使用 Math.round() 后得到 0.0 答案

java - PNG 上传时丢失 Alpha channel

android - Kotlin Android 中 "This AsyncTask class should be static or leaks might occur"的正确方法是什么?

.net-3.5 - .Net 3.5 中 BinaryFormatter 类的内存泄漏问题