`
ssxxjjii
  • 浏览: 950873 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于内存泄漏(Tomcat5.5+jdk1.5)

阅读更多
问题描述 服务器在运行一段时间后(两三天),内存不断上升(可到900M),经常出现java.lang.OutOfMemoryError: PermGen space的错误,导致tomcat死机,外部不能找开网站. 目前,web服务和数据库服务是分开的,web服务器是2005年9月才升级的, 内存2G,内存泄漏基本可以确定为Web服务器软件环境引起的. Web服务器的软件环境如下: 操作系统:Win2000 server Web服务:tomcat5.5 Jdk版本:jdk1.5 网站开发先后经历了三次大的调整,开发环境从最初的jdk1.4,tomcat4.0 升级到了现在的jdk1.5,tomcat5.5, 技术上也由当初的javabean+jsp,增加了struts,sql mapping,jstl,displaytag,另外,后台还同时运行了多个进程,以实现邮件的订阅,测评刷新,职位刷新,RSS刷新等功能 解决方案 鉴于以上情况,我通过以下步骤来排除内存泄漏的问题: 1. 根据近段时间的日志文件,发现有些情况下,死机前后,都是有后台线程启动,如”职位刷新””RSS刷新”,所以我准备先停止后台线程的自动运行,改成手动启动,以测试是否因为后台线程自动运行引起的干扰. 2. 错误java.lang.OutOfMemoryError: PermGen space,倒底是不是因为对象内存占用过多,没有被虚拟机JVM回收的原因引起,这点我一直有疑问. 查了一下PermGen space,全称是Permanent Generation space,就是说是永久保存的区域,用于存放 Class和Meta信息,Class在被Load的时候被放入该区域,从字面看,和存放Instance的Heap区域不同,GC(Garbage Collection)应该不会对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误. 所以我怀疑是我们源代码是使用了太多的静态static对象/方法/属性 所引起的,因为静态的对象/方法/属性是和类关联的,不被虚拟机JVM回收.正像上面说的, 如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误.,会不会太多的静态的对象/方法/属性会引起这个错误呢? 这点是我自己的理解,如果要验证,需要改写所有的静态的对象/方法/属性,这个工作量是巨大的(如果万一不是?),所以为了减小风险,我准备改写最常用的类(如查职位,文章显示)为非静态方法,如果能有一些效果(如死机的频率减少),再作进一步修改. 3. 更换tomcat版本,排除tomcat旧版本bug引起的内存泄漏问题. 以下是一个blog上发现的,和我们的问题比较类似. Tomcat 5.5.4有内存泄漏的问题,当我重新发布一个应用几次之后,Outofmemory:PermGen space,到apache的网站上找,说是5.5.8会修补这个问题。所以还是不要重新发布了,直接重起得了:) 4. 使用工具Jprofiler,实时监控服务器运行情况,当发现死机时,查看其内存使用情况,类和对象占用的内存大小等… Jprofiler可以监控内存堆栈的分配和使用情况、对象建立的多少情况、cpu使用的情况,还可以针对每个类或每个对象或每个线程、或每个函数对内存、cpu的使用情况,还可以看java虚拟机中自动垃圾收集的运行情况 5. 使用测试工具loadrunner,加大负载,模拟并发的大访问量. 周末两天,服务器没有死,但内存已到了860M之多.... 周一上午来上班的时候,就死了,还是java.lang.OutOfMemoryError: PermGen space的错误, 晕,...........
分享到:
评论

相关推荐

    jdk5.5+tomcat5.5 环境配置

    目前,最新的 jdk 版本为 1.5,tomcat 版本为 5.5。建议使用 jdk1.4 以上,tomcat4.0 以上的版本。 下载完成后,执行安装程序,并按照路径进行安装。 二、配置 jdk 环境变量 安装 jdk 完成后,需要配置环境变量。...

    InstallAnyWhere J2EE集成Tomcat6.0+MySql5.1+JDK1.5

    【InstallAnyWhere J2EE集成】是一个自动化安装过程,它涉及了三个关键组件:Tomcat6.0,MySql5.1,以及JDK1.5。这些组件都是Java相关技术的重要部分,对于构建和部署Java企业级应用程序至关重要。 1. **Tomcat6.0*...

    ireport5.5+jdk6

    ireport5.5+jdk6

    jdk1.5 and tomcat5.5

    标题"jdk1.5 and tomcat5.5"指的是Java Development Kit (JDK) 1.5版本与Apache Tomcat 5.5版本的组合。这两个组件是开发和运行Java应用程序的关键工具,特别是对于Web应用程序。 描述中提到的"jdk-1_5_0_22-...

    tomcat8+jdk1.8.zip

    【标题】"Tomcat8+jdk1.8.zip"是一个包含Tomcat 8服务器和Java Development Kit (JDK) 1.8版本的压缩包,适用于Linux和Windows操作系统。这个组合是开发和运行Java Web应用程序的常用环境配置。 【描述】提及的...

    tomcat8.5.20+jdk1.7或jdk1.8或jdk1.6

    【标题】"Tomcat 8.5.20与JDK 1.7、1.8及1.6的兼容性解析" 在IT行业中,Tomcat作为一款广泛应用的开源Java Servlet容器,对于Java Web应用程序的部署和运行起着至关重要的作用。本篇将详细讨论Tomcat 8.5.20版本与...

    tomcat6.0.48+jdk1.7或jdk1.8或jdk1.6

    标题中的"tomcat6.0.48+jdk1.7或jdk1.8或jdk1.6"指的是一个配置环境,其中Tomcat是Apache软件基金会的一个开源Java Servlet容器,版本为6.0.48,它主要用于部署和运行Java Web应用程序。而JDK(Java Development Kit...

    tomcat5.5与jdk1.4兼容包

    在Tomcat 5.5与JDK 1.4的兼容性方面,需要注意的是,虽然它们可以一起工作,但随着技术的发展,JDK的更新版本(如JDK 1.5及以上)通常会提供更好的性能和安全性。因此,对于新的项目或者需要长期维护的系统,推荐...

    jsp环境搭建Eclipse3.2+MyEclipse5.5+Tomcat5.5

    ### JSP环境搭建指南:Eclipse3.2 + MyEclipse5.5 + Tomcat5.5 在本文中,我们将详细介绍如何搭建一个基于Eclipse3.2、MyEclipse5.5和Tomcat5.5的Java Server Pages (JSP) 开发环境。这个组合在早期的Web开发中非常...

    uts1.2+JNDI+JDK1.5+MySql

    这里提到的"uts1.2+JNDI+JDK1.5+MySql"是一个项目,利用了SSH框架以及JNDI(Java Naming and Directory Interface)、JDK 1.5版本和MySQL数据库。下面我们将详细讨论这些知识点。 1. **Struts 1.2**: Struts是...

    tomcat+mysql+jdk_jdk_tomcat+mysql+jdk脚本安装_Mysql+Tomcat+JDK_

    在IT行业中,构建一个基于Java的Web应用环境通常涉及到三个核心组件:JDK(Java Development Kit)、MySQL(一种关系型数据库管理系统)以及Tomcat(一个流行的Java应用服务器)。标题和描述提到的“tomcat+mysql+...

    tomcat5.5 免安装版+配置教程

    `jdk1.5和tomcat5.5免安装的环境配置.txt`文件很可能是详细记录了配置过程的文字说明,包括JDK和Tomcat的安装、环境变量设置、防火墙端口开放等细节。建议按照这个文件的指示操作,确保每一步都正确无误。 需要注意...

    JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk)

    JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk) JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk) JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk) JavaWeb...

    tomcat7+jdk1.7+redis session共享;tomcat8+jdk1.8+redis session共享 jar包+配置文件

    默认情况下,Tomcat会在每个实例的内存中存储session数据,这意味着当用户在集群中的一个节点上登录后,如果请求被转发到另一个节点,该节点将无法访问到原始session信息,导致用户需要重新登录。为了解决这个问题,...

    jdk1.5+tomcat6+jdk1.6+tomcat7

    Java开发和部署环境的搭建是每个Java开发者必备的技能之一,本压缩包包含了"jdk1.5"、"tomcat6"以及"jdk1.6"、"tomcat7"等关键组件,适用于那些需要在较低版本环境中运行或测试应用程序的用户。下面将详细介绍这些...

    Iis6.0 和tomcat5.5+sql2000整合方案

    【IIS6.0与Tomcat5.5+SQL2000整合方案】 整合IIS6.0(Internet Information Services 6.0)与Tomcat5.5和SQL2000是将Windows服务器上的静态内容处理能力与Java应用程序服务器的动态功能相结合的过程。这种集成允许...

    nginx+tomcat7+jdk1.7+redis--jar.rar

    标题 "nginx+tomcat7+jdk1.7+redis--jar.rar" 提示我们这是一个关于在Web服务器架构中集成Nginx、Tomcat7、Java 1.7和Redis的解决方案,特别是涉及到使用Redis作为Session缓存的配置。描述中强调了在下载和使用这些...

    centsos6.5+jdk1.7+mysql5.5+tomcat7+nginx1.7安装手册

    ### CentOS 6.5 + JDK 1.7 + MySQL 5.5 + Tomcat 7 + Nginx 1.7 安装手册 #### 一、JDK 1.7 安装 ##### 1.1 下载JDK 1.7 - 访问Oracle官方下载页面:...

    linux安装配置jdk1.5、tomcat5.5、eclipse3.2详解

    总结,本文详细介绍了在Linux系统中安装JDK1.5、Tomcat5.5和Eclipse3.2的全过程,包括软件下载、安装、配置环境变量以及使用插件优化开发环境。即使对Linux不熟悉的新手,也能按照这个指南顺利完成Java开发环境的...

Global site tag (gtag.js) - Google Analytics