现网出现一个问题,Client访问我们的接入服务器A,A将请求转给服务器B(Http请求,使用HttpURLConnection实现);某天,B服务器突然宕机,Client在登录的过程中,经常需要访问B,B宕机一段时间后,A也报出OutOfMemoryError。
这个问题定位了很久,开始以为我们的代码有问题,以为IO流没有关闭,打开GC日志进行压力测试,没有发现堆内存问题。
但JVM还是宕机。
之后,在Linux下,我们模拟现网的情况,访问另一机器的不存在的端口,在大并发的情况下,Xmx设为1024m,大概12个小时,JVM会OutOfMemory;如果将Xmx设为1700m,不到一小时,JVM就会OutOfMemory;
HttpURLConnection是基于TCP实现的,所以为了进一步验证,我把HttpURLConnection改成了Socket,同样访问另一机器的不存在的端口,也会出现同样的问题;
在Windows下,我也经过两样的验证,跑了10多个小时,没有出现异常,因此,可以断定,Linux下的JVM 1.5实现有Bug。Socket实现是依赖本地的实现的,Linux下的Socket实现有Bug,导致JNI内存溢出。
-----------------------------
希望遇到同样问题的朋友,可以少走弯路。
分享到:
相关推荐
- **查看错误日志**:Tomcat的`catalina.out`日志会记录`Out of Memory`错误的具体信息,帮助定位问题。 - **使用JConsole或JVisualVM**:这些JDK自带的工具可以实时监控JVM的内存使用情况,辅助诊断。 - **分析...
标题 "使用Memory Analyzer tool检测OutofMemory异常" 涉及到的是Java内存管理的一个重要环节,即如何通过工具分析并解决程序运行时出现的内存溢出问题。Memory Analyzer Tool (MAT) 是由Eclipse基金会开发的一款...
标题 "BlazeDS+Spring+activeMQ outofmemory" 指的是在使用BlazeDS、Spring和ActiveMQ集成的环境中遇到了内存溢出问题。BlazeDS是一个开放源码的服务器端技术,它允许双向通信,使Flex或AJAX客户端能够与Java后端...
在Java编程中,`OutOfMemoryError`是一种常见的运行时异常,它通常发生在JVM试图为新对象分配内存时,但堆内存空间已满或无法进一步扩展的情况下。这个错误可以分为几种类型,包括`PermGen space`、`Heap Space`、`...
标题与描述中的关键词“Tomcat Out of Memory Solution”指向了在运行Tomcat服务器时遇到内存溢出错误(Out of Memory Error)的解决方法。在IT领域,尤其是Java应用服务器环境中,Tomcat作为一款广泛使用的开源轻量...
linux 下用java 获取系统信息 cpu mem jvm等 用java调用系统命令得到,方便实用
在Python编程过程中,有时会遇到一个令人头疼的问题——"out of memory",即内存不足。这个问题通常发生在程序尝试分配超出系统可用内存的空间时。当Python解释器无法为新对象分配足够的内存时,它会抛出`Memory...
jvm memory
Linux 服务器调优与 JVM 参数调优 本文主要介绍了 Linux 服务器调优和 JVM 参数调优的相关知识点,以便提高服务器性能和 JVM 应用程序的运行效率。 Linux 服务器调优 Linux 服务器调优是指对 Linux 操作系统的...
本篇文章将深入探讨基于给定文件名的JVM异常分析主题,包括socket端口占用问题和内存溢出系统异常,以及如何解决这些问题以防止异常宕机。 首先,让我们关注"623scoket端口占有和内存溢出系统异常分析"这个文件。...
### 美团JVM问题定位和排错 #### 背景 在现代软件开发中,Java虚拟机(JVM)作为运行Java程序的基础平台,对于任何使用Java语言进行开发的服务都至关重要。然而,在实际运行过程中,由于复杂的运行环境和技术栈的...
JVM 输出 GC 日志导致 JVM 卡住 JVM 输出 GC 日志导致 JVM 卡住是一个常见的问题,尤其是在高并发和高性能应用中。这个问题的根源在于 JVM 的垃圾回收机制(Garbage Collection,GC),它会在 JVM 运行时周期性地...
MemoryAnalyzer(MAT)是一款强大的JVM堆内存分析工具,由IBM开发并开源,它提供了详尽的内存分析报告,帮助开发者定位内存问题,提升程序效率。本文将详细介绍MemoryAnalyzer的主要功能、使用方法以及其在实际开发...
在IT行业中,JVM(Java Virtual Machine)调优和Linux系统操作是两个至关重要的技能,尤其是在处理大型企业级应用时。对于Java开发者来说,理解JVM的工作原理并能进行有效的调优,可以显著提升应用程序的性能和稳定...
在Android Studio中集成"JVM Memory View"后,开发者可以在调试模式下轻松访问此工具。通过查看内存视图,可以定位到内存消耗过大的代码段,优化内存分配,提升应用性能。 四、优化实践 1. **适当对象复用**:减少...
《深入理解MemoryAnalyzer:JVM内存分析利器》 在Java应用程序的开发和优化过程中,内存管理是一项至关重要的任务。MemoryAnalyzer(MAT)是一款强大的JVM内存分析工具,它能够帮助开发者深入洞察应用的内存占用...
在 Linux 环境下安装 NC 时,安装界面的中文经常显示为乱码,导致界面无法正常显示中文字符。这是由于 JVM 无法找到用来显示中文的字库所致。以下是解决该问题的详细分析和解决方案。 一、问题分析 在基于 AWT 的...
在 Linux 环境下使用 iReport 时,中文字符可能会出现字体问题,导致报表无法正确打印或导出。解决这个问题的关键是确保系统中安装了正确的字体环境。 第一个问题是 iReport 在 Windows 下打印功能正常,而部署到 ...
本文将基于提供的文件内容,深入解析Linux环境下JVM的基本参数设置方法及原理。 #### 一、内存参数设置 在JVM参数配置中,内存管理是最为关键的部分之一。下面我们将详细解释几个重要的内存相关参数及其作用: 1....