permgen space解决方案

原文地址:http://outofmemory.cn/c/java-outOfMemoryError

java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因:JVM内存过小、程序不严密,产生了过多的垃圾。

导致OutOfMemoryError异常的常见原因有以下几种:

此错误常见的错误提示:

解决java.lang.OutOfMemoryError的方法有如下几种:

一、增加jvm的内存大小。方法有:

1)在执行某个class文件时候,可以使用java -Xmx256M aa.class来设置运行aa.class时jvm所允许占用的最大内存为256M。

2)对tomcat容器,可以在启动时对jvm设置内存限度。对tomcat,可以在catalina.bat中添加:

set CATALINA_OPTS=-Xms128M -Xmx256M
set JAVA_OPTS=-Xms128M -Xmx256M

或者把%CATALINA_OPTS%和%JAVA_OPTS%代替为-Xms128M -Xmx256M

3)对resin容器,同样可以在启动时对jvm设置内存限度。在bin文件夹下创建一个startup.bat文件,内容如下:

@echo off
call "httpd.exe"  "-Xms128M" "-Xmx256M"
:end

其中”-Xms128M”为最小内存,”-Xmx256M”为最大内存。

二、 优化程序,释放垃圾。

主要包括避免死循环,应该及时释放种资源:内存, 数据库的各种连接,防止一次载入太多的数据。导致java.lang.OutOfMemoryError的根本原因是程序不健壮。因此,从根本上解决Java内存溢出的唯一方法就是修改程序,及时地释放没用的对象,释放内存空间。 遇到该错误的时候要仔细检查程序,嘿嘿,遇多一次这种问题之后,以后写程序就会小心多了。

Java代码导致OutOfMemoryError错误的解决:

需要重点排查以下几点:

tomcat中java.lang.OutOfMemoryError: PermGen space异常处理

PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 解决方法: 手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh在

echo "Using CATALINA_BASE:   $CATALINA_BASE"

上面加入以下行:

JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。

weblogic中java.lang.OutOfMemoryError异常处理

错误提示: Root cause of ervletException java.lang.OutOfMemoryError 解决办法:调整bea/weblogic/common中CommEnv中参数

:sun
  if "%PRODUCTION_MODE%" == "true" goto sun_prod_mode
  set JAVA_VM=-client
  set MEM_ARGS=-Xms256m -Xmx512m -XX:MaxPermSize=256m
  set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none
  goto continue
  :sun_prod_mode
  set JAVA_VM=-server
  set MEM_ARGS=-Xms256m -Xmx512m -XX:MaxPermSize=256m
  goto continue

Resin下java.lang.OutOfMemoryError异常处理

产生内存溢出的原因:

出现这个错误,一般是因为JVM物理内存过小。默认的Java虚拟机最大内存仅为64兆,这在开发调试过程中可能没有问题,但在实际的应用环境中是远远不能满足需要的,除非你的应用非常小,也没什么访问量。否则你可能会发现程序运行一段时间后包java.lang.OutOfMemoryError的错误。因此我们需要提升resin可用的虚拟机内存的大小。

解决方法:

修改/usr/local/resin/bin/httpd.sh中的args选项 添加参数 -Xms(初始内存)和 -Xmx(最大能够使用内存大小)可以用来限制JVM的物理内存使用量。例如:

args="-Xms128m -Xmx256m"

设置后,JVM初始物理内存是128m,最大能使用物理内存为256m。

这两个值应该由系统管理员根据服务器的实际情况进行设置。

Original: https://www.cnblogs.com/chujian007/p/16312104.html
Author: 初见洞洞拐
Title: permgen space解决方案

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599276/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 工具 | 一条 SQL 实现 PostgreSQL 数据找回

    作者:张连壮 PostgreSQL 研发工程师从事多年 PostgreSQL 数据库内核开发,对 citus 有非常深入的研究。 快速恢复丢失的数据是数据库的重要功能要求,一般推荐…

    数据库 2023年5月24日
    093
  • Mybatis完整版详解

    一、简介 1.什么是MyBatis MyBatis 是一款优秀的持久层框架 它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参…

    数据库 2023年6月16日
    094
  • eclipse反编译插件

    1、在eclipse的help—》Install New Software…中添加新软件开发,添加它的源: undefined name : jd – ec…

    数据库 2023年6月11日
    084
  • 重新学习数据库(1)

    单元概述 通过本章的学习能够了解MySQL结构查询语言的概念,掌握SELECT查询语句的基本语法,掌握SELECT查询语句中过滤条件的使用,掌握过滤条件中比较运算符和逻辑运算符的使…

    数据库 2023年6月16日
    0203
  • mysql数据库备份之主从同步配置

    主从同步意义? 主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异…

    数据库 2023年6月6日
    088
  • 注解

    注解概述 从 JDK5 开始,Java 增加对 元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解…

    数据库 2023年6月15日
    0102
  • 集合自序整理集

    集合和数组一样都是对多个数据进行存储操作的容器 * – 集合长度可变,数组长度固定 – 集合可以存储不同数据类型元素,数组只能存储单一数据类型元素 &#82…

    数据库 2023年6月9日
    0117
  • 常用MySQL语句(持续更新)

    1. 客户端登录 在终端输入 mysql -u[用户名] -p[密码]…

    数据库 2023年6月14日
    088
  • mysql数据备份与恢复之mysqldump和source命令

    use database source dbname.sql 1.导出一个数据库的结构 mysqldump -d dbname -uroot -p > dbname.sql …

    数据库 2023年5月24日
    077
  • MySQL函数学习(三)—–日期和时间函数

    注:笔记旨在记录 三、MySQL 日期和时间函数 3.1 获取时间、日期、年、月、日、周、日相关函数 \ 函 数 名 称 作 用 1 CURDATE 和 CU…

    数据库 2023年6月16日
    073
  • SpringBoot-异常处理

    在SpringBoot中,无论是请求不存在的路径、@Valid校验,还是业务代码(Controller、Service、Dao)抛出异常,SpringBoot对错误的默认处理机制是…

    数据库 2023年6月14日
    094
  • MySQL中读页缓冲区buffer pool

    Buffer pool 我们都知道我们读取页面是需要将其从磁盘中读到内存中,然后等待CPU对数据进行处理。我们直到从磁盘中读取数据到内存的过程是十分慢的,所以我们读取的页面需要将其…

    数据库 2023年5月24日
    0114
  • MySQL进阶系列:一文详解explain

    explain有何用处呢: 为了知道优化SQL语句的执行,需要查看SQL语句的具体执行过程,以加快SQL语句的执行效率。 ​ 可以使用explain+SQL语句来模拟优化器执行SQ…

    数据库 2023年5月24日
    0134
  • 分享一例同一系统里不同服务之间通信的设计方案

    优付系统结构如下。一个数据库之上,有商户接口(RestAPI)、运营后台(OMS)、商户门户这3个独立SSM应用,三者有各自不同的功能处理逻辑。 现在呢,要做一个补偿工具。当付款单…

    数据库 2023年6月9日
    0140
  • MySQL45讲之前缀索引

    本文介绍了字符串前缀索引的优缺点,以及当字符串的区分度不高时如何建立索引。 [En] This article introduces the advantages and disa…

    数据库 2023年5月24日
    080
  • 2022-08-16 数据库查询语言之——-DQL

    重点,DQL是我们每天都要接触编写最多也是最难的SQL,该语言用来查询记录,不会修改数据库和表结构。 构建数据库 创建一张student表: DROP TABLE IF EXIST…

    数据库 2023年5月24日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球