了解内存使用率

要调试内存泄漏,您需要了解可能导致内存问题的机制, JVM 如何使用 LE HEAP , JVM 如何使用 z/OS® 虚拟存储器以及 java.lang.OutOfMemoryError 异常的可能原因。

可以通过以下机制在 Java™ 进程中发生内存问题:
  • 本机 (C/C++) 内存泄漏:此问题会导致 LE HEAP 的使用率增加(仅限 31 位 VM),这会显示为过度使用 Subpool2、Key 8 或存储器,以及进程地址空间的工作集大小过大
  • Java 管理的堆中的 Java 对象泄漏。 该泄漏是由于应用程序或中间件中的编程错误所致。 这些对象泄漏会导致垃圾回收周期完成后保留的活动数据量增加。
  • Java 堆大小不正确。 例如,堆大小可能太小,无法提供应用程序所需的存储量。 不过,堆大小过大可能导致其他组件(如本地线程栈)缺乏 MVS 私有区存储。 使用 -Xmx 选项可以根据您的应用程序和环境来优化堆大小。
  • 存储区分配不足。 例如,如果 REGION , MEMLIMIT 或 MAXTHREADS 参数设置过低,或者如果存储区域与其他产品 (例如 IBM® CICS®) 的存储区域存在争用。