文档章节

SSH部署到Tomcat内存溢出-OutOfMemoryError 的解决办法

吃肉肉不长肉肉
 吃肉肉不长肉肉
发布于 2016/12/08 14:05
字数 546
阅读 6
收藏 0

使用ssh集成项目后,部署几次后会就会出现OutOfMemoryError PermGen space系统错误,通过在网上查阅资料,发现这个错误并不是Tomcat的问题,而JVM设计自身的一个缺陷,JVM把内存分了不同的区, PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,类加载的时候就存放在这个区域中。本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收!

没想到至今这个问题还没未能解决,有人给出最好的解决方法是不使用JDK,使用BEA的JRokit,当然现在Oracle,BEA,SU已经成为一家人了,我想这个问题应该会更快有更好的解决方案。

好了还是说说如何解决问题吧,网上大量的资料说在tomcat这样设置:SET JAVA_OPTS= -Xms64m -Xmx512m,但经过本人的测试,没有一点作用,详细看了JVM内存的分配机制后才知道,-Xms和--Xmx是调整Java heap space(即堆内存)的大小,ava heap space区域中存放对象,GC会收集这块区域。

如果出现的异常类型是:OutOfMemoryError: Java heap space,那应该设置 SET JAVA_OPTS= -Xms64m -Xmx512m。

如果出现的异常类型是:OutOfMemoryError  PermGen space,那应该设置set JAVA_OPTS=-Xms128m -Xmx512m  -XX:PermSize=128M -XX:MaxPermSize=256m

常见的有两种设置方法:

如果在开发环境中启动tomcat,以eclipse为例:选择window->Preferences->MyEclipse-servers-Tomcat->JDK 在右侧框Optional Java  VM arguments中加入:-Xms128m -Xmx512m  -XX:PermSize=128M -XX:PermSize=256M

如果独立启动tomcat,修改tomcat/bin/catalina.bat文件,查找set JAVA_OPTS,找到后把这一行修改为:

set JAVA_OPTS=-Xms128m -Xmx512m  -XX:PermSize=128M -XX:MaxPermSize=256M,设置的时候要注意:-Xms+X:PermSize不能大于系统支持的最大JVM的大小。具体大小根据自己内存大小调整吧。

本文转载自:http://www.linuxidc.com/Linux/2013-06/85940.htm

共有 人打赏支持
吃肉肉不长肉肉
粉丝 0
博文 28
码字总数 2937
作品 0
合肥
程序员
私信 提问
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结

本来想写一写项目中遇到的内存溢出的问题,看了好多博客,发现有一篇特别好的博客,拾人牙慧,共享分享。 转载:http://outofmemory.cn/c/java-outOfMemoryError java.lang.OutOfMemoryErro...

mengdonghui123456
2017/02/07
0
0
启动SSH框架项目 Tomcat报错

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bitree1/article/details/50184055 org.apache.catalina.core.StandardContext listenerStart严重: Exception......

bitree1
2015/12/05
0
0
linux/centos 解决Tomcat内存溢出,centostomcat

linux/centos 解决Tomcat内存溢出,centostomcat Tomcat本身不能直接在计算机上运行,需要依赖于操作系统和一个JAVA虚拟机。JAVA程序启动时JVM会分配一个初始内存和最大内存给APP。当APP需要...

空灵飞渡
2016/08/11
29
0
部署shop++,启动eclipse遇到内存溢出。

部署项目到tomcat,启动eclipse,控制台报OutOfMemoryError: PermGen space错误。网上找了一些资料,需要加大tomcat内存设置。 一、OutOfMemoryError: Java heap space 是堆溢出(存放java初始...

Waterxvb
2016/05/06
22
0
tomcat内存溢出问题记录

问题说明: 公司内网环境中部署的jenkins代码发版平台突然不能访问了,查看tomcat的catalina.out日志发现报错如下: 上面报错是由于tomcat内存溢出引起的: Tomcat默认可以使用的内存为128MB...

吞吞吐吐的
2017/10/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里大规模数据中心性能分析

郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A...

阿里云官方博客
18分钟前
0
0
Coding and Paper Letter(四十四)

资源整理。 1 Coding: 1.Rstudio2019年会“机器学习应用”的幻灯片,代码和数据 rstudio conf 2019 2.R语言包sparkxgb,Spark上XGBoost的R接口。 sparkxgb 3.自动SQL注入和数据库接管工具。 ...

胖胖雕
20分钟前
0
0
Ubuntu最新的主要操作系统放弃32位支持?

现在是2018年,2019年即将到来——64位处理器已经成为主流很长一段时间了。如果你仍然使用32位的电脑,那么是时候把它扔进垃圾箱了。 我为所有基于Linux的操作系统维护者感到自豪,他们有勇气...

Linux就该这么学
21分钟前
0
0
Fundebug发布Vue插件,简化BUG监控接入代码

摘要: 代码越短越好! 我们发布了fundebug-vue插件,可以简化Vue框架接入Fundebug的代码。 Vue如何接入Fundebug 1. 安装fundebug-javascript与fundebug-vue npm install fundebug-javascrip...

Fundebug
28分钟前
0
0
MySQL学习笔记之二

数据库的操作总结就是:增删改查(CURD),今天记录一下基础的检索查询工作。 检索MySQL 1.查询表中所有的记录 mysql> select * from apps;+----+------------+-----------------------+------...

凌宇之蓝
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部