在本地测试无误的程序,放上正式服时,出现了堆溢出,本地是Windows系统下的,服务器是linux系统,后来经过测试发现是我在本地跑程序时,在eclipse中添加了如下参数:
此处先解释下上面各参数的的含义:
-Xms512m 堆的最小值
-Xmx1024m 堆的最大值
另外jvm垃圾回收采用分代搜集的方法,把堆分为三个部 分,新域,旧域和永久域。Jvm生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便获得使用期并进入旧域。在永久域中jvm则存储 class和method对象。就配置而言,永久域是一个独立域并且不认为是堆的一部分
-XX:MaxPermSize=512 设置永久域的最大值,
-XX:ReservedCodeCacheSize=64m缓存,可以自己改,超过也溢出,不过,溢出也无所谓,忽略即可
我猜想是不是因为tomcat没有设置上述参数导致的;因为一开始我都是依赖eclipse来启动tomcat的,所以tomcat在启动时就会去加载eclipse中配置的环境,而正式服服务器启动是脱离ide的,所以并没有这些参数设置?
为了验证我的猜想;
我特地去我本地拿tomcat跑程序,不依赖eclipse去启动,此时本地tomcat并未设置上述参数;结果如下:
果然本地的tomcat不依赖eclipse也出现了堆溢出
找到tomcat的配置文件:tomcat的安装目录下的bin下面
此处解释下,为什么会有2个Catalina文件,后缀名为.bat的是windows下的配置文件,后缀名为.sh的为Linux下的配置文件,话不多说
打开Catalina.bat文件,找到如下位置:
JAVA_OPTS:java相关运行参数
此处应该是配置了tomcat默认的JAVA_OPTS参数
在此处前面添加:(具体添加位置我还没有弄清楚,我是加在此处也有效,就暂时加在这了)
set JAVA_OPTS=%JAVA_OPTS% -Xms512m -Xmx1024m -XX:MaxPermSize=512m -XX:ReservedCodeCacheSize=64m
添加完成后,保存,重新启动tomcat:结果ok了
ok,下面我来讲下如何在Linux环境下,配置tomcat的Java运行环境:
首先同样的找到,tomcat的安装目录下的bin,然后打开Catalina.sh文件;
找到如下位置:
在此处添加:
JAVA_OPTS="-Xms512m-Xmx1024m-XX:ReservedCodeCacheSize=64m-XX:MaxPermSize=512m"
保存,ok!!!
以上参数的具体大小,和需要配置的参数,根据自己的实际情况更改
下面我将附上jvm参数大全:
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
程序运行要用到的内存大于虚拟机能提供的最大内存就发生内存溢出了, 内存溢出的问题要看业务和系统大小而定,对于某些系统可能内存溢出不常见,但某些系统还是很常见的解决的方法
jvm内存溢出 学习笔记
jvm堆内存溢出jar包代码
简单的判断JVM内存溢出的方法
关于JVM内存溢出的原因分析及解决方案探讨.docx
主要介绍了JVM 堆内存溢出后,其他线程是否可继续工作?,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
JVM内存溢出的解决方案以及相关描述和TOMACAT参数配置
主要介绍了记一次公司JVM堆溢出抽丝剥茧定位的过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
资源描述: 1.JVM中[堆]的所有内容-pdf 2.资源内容:JVM中[堆]所有内容 3.学习目标:了解jvm底层原理 4.特点:简单易懂,容易上手 5.使用说明:需要使用pdf打开
NULL 博文链接:https://dreammoon.iteye.com/blog/2210704
MemoryAnalyzer JVM堆内存分析工具
java.lang.OutOfMemoryError: Java heap space:这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: <jvm>-Xms3062m</...
JVM堆相关知识 为什么先说JVM堆? JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在...这些对象的建立方式就是那些new一类的操作,当对象无用后,是GC来负责这个无用的对象(地球人都知道)。
jvm内存反洗工具:
jvm内存溢出解决方法,详细内容看下面解释
自己总结的jvm中堆的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合jvm的爱好者和学习者
深入理解JVM 深入理解JVM 深入理解JVM
2020 宋红康 JVM 第 08 章 学习记录PPT。本章主要是讲述 堆空间划分、分配和回收。另外包括逃逸分析相关内容
jvm源码
JVM_启动参数_总结。详细介绍JVM的详细启动参数及JVM垃圾回收机制。