"排查 WebLogic 内存不足" 一、问题描述 WebLogic 内存不足是指 Java 堆或本地内存中的内存耗尽,应用程序显示“内存不足”错误。内存泄漏是 Java 堆或本地内存的持续内存增长,最终将导致内存不足状态。 二、故障排除 排除内存不足和内存泄露的常规方法如下: 1. 基本概念 * Java 堆:JVM 用来分配 Java 对象的内存。Java 堆内存的最大值可以通过 Java 命令行中的 -Xmx 标志来指定。 * 本地内存:JVM 用于其内部操作的内存。本地内存的大小取决于生成的代码量、创建的线程、GC 期间用于保存 Java 对象信息的内存,以及在代码生成、优化等过程中使用的临时空间。 2. 进程地址空间和物理内存之间的差异 * 每个进程都获得其自有的地址空间。在 32 位操作系统中,此地址空间范围为 0 到 4 GB。 * 计算机中的可用物理内存总量是该计算机上的可用 RAM 和交换空间之和。 * 进程内的存储地址是虚拟地址,内核将此虚拟地址映射到物理地址上。 三、为什么会发生 OOM 问题 * Java 堆中的内存不足:如果 JVM 不能在 Java 堆中获得更多内存来分配更多 Java 对象,将会抛出 Java 内存不足 (Java OOM) 错误。 * 本地堆中的内存不足:如果 JVM 无法获得更多本地内存,它将抛出本地内存不足(本地 OOM)错误。 四、排除故障的步骤 * 确定是 Java OOM 还是本地 OOM: + 如果 stdout/stderr 消息说明这是一个 java.lang.OutOfMemoryError,那么这就是 Java OOM。 + 如果 stdout/stderr 消息说明无法获得内存,那么这就是本地 OOM。 * 对于 Java OOM: + 收集和分析 verbose gc 输出。 + 在 Java 命令行中添加“-verbosegc”标志。 + 将 stdout/stderr 重定向到一个文件。 + 运行应用程序,直到该问题重现。 五、解决方法 * 对于 Java OOM: + 执行完整 GC 运行,并删除了所有不可及对象以及虚可及、弱可及、软可及对象。 + 分析 GC 活动信息,查找内存泄漏的原因。 + optimize Java code and JVM parameters to reduce memory usage. 六、总结 WebLogic 内存不足是一个常见的问题,导致应用程序崩溃或性能下降。通过了解 Java 堆和本地内存的概念、进程地址空间和物理内存之间的差异,可以更好地排除内存不足和内存泄露问题。同时,通过收集和分析 verbose gc 输出、执行完整 GC 运行、analyze GC activity information,可以找到内存泄漏的原因, optimize Java code and JVM parameters to reduce memory usage.
- 粉丝: 2
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助