轻量级内存泄漏检测
本主题描述 Java™ 应用程序中的内存泄漏,并介绍轻量级内存泄漏检测。
尽管 Java 应用程序有内置垃圾回收机制,程序员不用显式释放对象,但内存泄漏在 Java 应用程序中仍很常见。如果无意中引用了未使用的对象,Java 应用程序中就会发生内存泄漏。发生内存泄漏会阻止 Java 垃圾回收释放内存。
内存泄漏这一术语被使用得过多;其实内存泄漏是指内存误用或管理不善。旧的未使用的数据结构可能会有未完成但又决不会进行垃圾回收的引用。数据结构可能会无边际地增长,或者无法分配足够的内存来有效地运行一组应用程序。
大多数现有内存泄漏技术基于以下事实:您知道存在内存泄漏并且想要找到它。因为这些分析需求,这些技术的性能负担很重,而且并未用作生产中的检测机制。此局限性意味着,除非问题很关键,否则通常不会检测到内存泄漏;该应用程序通过所有系统测试后投入生产,但它突然崩溃了,没有人知道原因。
WebSphere® Application Server 已经实现了在 WebSphere 性能和诊断顾问程序 框架中运行的轻量级内存泄漏检测机制。此机制用于在测试环境和生产环境中提供内存问题的早期检测。此框架不是旨在提供问题来源的分析,而是提供通知并帮助生成使用分析工具所需的信息。该机制仅检测 Java 堆中的内存泄漏,而不检测本机泄漏。
WebSphere Application Server 中的轻量级内存泄漏检测不需要任何其他代理程序。检测依赖于算法,这些算法基于性能监控基础结构服务中提供的信息,并且具有最低性能开销。