java程序运行内存分配不足_解决Tomcat运行内存不足问题
在使用Java程序从数据库中查询大量的数据或是应用服务器(如tomcat、jboss,weblogic)加载jar包时会出现java.lang.OutOfMemoryError异常。这主要是由于应用服务器的内存不足引起的。这种异常常有以下几种情况(以下以tomcat环境为例,其它WEB服务器如jboss,weblogic等是同一个道理):
1. java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space。从文字上看就是内存溢出,解决方法是加大内存。为什么会内存溢出,这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被放入PermGen space区域,它和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
a.如果tomcat是以bat方式启动的,则如下设置: 修改TOMCAT_HOME/bin/catalina.sh
在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m"
b.如果tomcat是注册成了windows服务,以services方式启动的,则需要修改注册表中的相应键值。 打开注册表,找到目录HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\htfty\Parameters\Java,其中目录地址中红色标注的(如htfty)需要根据不同情况作修改,为tomcat服务注册成windows服务的名称。 可以看到
JvmMs和JvmMx项,其中
JvmMs设置最小的内存使用参数,JvmMx设置最大的内存使用参数。设置好
JvmMs和JvmMx项的值,重启tomcat服务器即可生效。
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。
2. java.lang.OutOfMemoryError: Java heap space JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置。JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。
解决方法:手动设置Heap size
a.如果tomcat是以bat方式启动的,则如下设置: 修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
b.如果tomcat是注册成了windows服务,以services方式启动的,则需要修改注册表中的相应键值。 打开注册表,找到目录HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\htfty\Parameters\Java,其中目录地址中红色标注的(如htfty)需要根据不同情况作修改,为tomcat服务注册成windows服务的名称。 可以看到
JvmMs和JvmMx项,其中
JvmMs设置最小的内存使用参数,JvmMx设置最大的内存使用参数。设置好
JvmMs和JvmMx项的值,重启tomcat服务器即可生效。
提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
原文:http://www.cnblogs.com/afarmer/archive/2012/01/05/2313283.html
java程序运行内存分配不足_解决Tomcat运行内存不足问题相关推荐
- tomcat下只有.class文件 没有java文件_解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题...
今天部署项目到tomcat,发布完后,启动tomcat,报class not found: 临时找了个解决方案,由于项目是copy过来的,于是就将原来项目的classes下面编译好的class文件也一 ...
- 所有java程序都有线程_若所有的用户线程都终止了,Java程序就会结束。( )_学小易找答案...
[单选题]关于链表结构,陈述错误的是 . [单选题]下列关于构造方法的特点的描述中,错误的是 . [判断题]在构造方法中如调用 super() 语句,则必须使其成为构造方法中的第一条语句. [单选题] ...
- Java程序员自我认知_程序员35岁之后该怎样规划自己的职业?
尴尬的35岁 不知道是哪个人提出的职场35岁就要面临被淘汰的定律,因为35岁定律本来就是个伪命题,尤其是在IT行业! 现在年八九百万的大学生毕业,他们虽然年轻活力,但是很多企业也将之"拒之门 ...
- java程序员加班吗_作为java程序员,一定要加班才是好程序员吗?
加班的java程序员不一定就是好的java程序员,不加班的java程序员不一定就是坏的java程序员,我们需要从工作态度.能力.责任心等等方面来综合的对java程序员的好坏进行分析. 一个好的java ...
- java程序员年度总结_一个五年Java程序员的年终总结,献给还在迷茫中的你
我越来越担心我作为一个Java程序员的未来. 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过 ...
- java程序运行结果题_(Java程序设计)试题
装 订 线 内 不 答 题 要 二.多选题 (每题2分,共10分) . A.Java 语言是面向对象的.解释执行的网络编程语言. B.Java 语言具有可移植性,是与平台无关的编程语言. C.Java ...
- java程序包不存在_第一章 Java语言简介
Java语言简介 Java之父 James Gosling(詹姆斯·高斯林) 正式诞生时间 1995年,已有二十多年历史 三大方向 JavaSE(桌面版,基础需重点掌握) JavaME(移动版,现在基 ...
- java程序笑脸怎么打_我编写的JAVA程序为什么在编译执行后会先打出一个笑脸呢?...
嗯,我个人认为,从键盘输入再输出意义不是很大,如果楼主有C的基础,那么这个输入将是一个很好练习,因为java的输入和输出与C有很大的区别,废话不多说 首先,无论是在Eclipse的控制台上还是CMD模 ...
- java程序员拜年代码_程序员的新年祝福是什么样的?
2019就要到来了, 马上要收到各种形形色色的新年祝福, 尽管有一些简单真诚的祝福语, 不过大多是千篇一律的罐头短信. 程序员作为一群高智商群体 在这辞旧迎新的时刻 怎么能一直玩那些老掉牙的梗呢! 你 ...
最新文章
- 2022-2028年中国地沟油制生物柴油行业市场研究及前瞻分析报告
- 【Harvest源码分析】GetFilteredSignal函数
- LeetCode Maximal Rectangle(dp)
- 日期和时间规范函数 (Entity SQL)
- 重温Vue-router
- C语言文件操作(四)将txt格式汉字转化为txt格式16进制编码
- APP视觉稿该怎么切图和标注
- 论文浅尝 | 实体图的预览表格生成
- linux定时器错误使用,linux下定时器的使用
- 使用spring cache和ehcache之前必须了解的
- PHP non-thread-safe和thread-safe这两个版本的区别
- 线性代数及其应用笔记
- 模具设计中一些常见的问题
- 服务器网口聚合操作文档,服务器网口聚合怎么操作
- 语法分析器实现过程(java)
- 华为鸿蒙系统卡片,18个月不卡?这四款华为2年还流畅,支持鸿蒙OS
- JAVA外卖订餐系统毕业设计 开题报告
- 微型投影仪第三篇——磕磕绊绊
- 解决谷歌浏览器打开控制台有延迟
- 日本机器人全球领先来自这三大顶尖技术