Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案
问题
linux的jetty下发布程序后再启动jetty服务时,发现启动不了,从日志中找到报java.lang.OutOfMemoryError: PermGen space。
原因分析
PermGen space,全称是Permanent Generation space,指的是内存3带中的永久区域。当java中间件启动时,会将相关的jar包和.class加载到永久区域,而用就区域的空间是固定的,虽然可以设置。报这个错的原因就是在启动加载.class时,永久区域溢出了。
解决方案:
修改jetty的启动脚本:/etc/init.d/jetty
JAVA_OPTIONS="-Xmx256m -Djava.awt.headless=true -Djava.library.path=/usr/lib"
改为:(可以自己内存情况合理安排)
JAVA_OPTIONS="-Xmx1024m -XX:MaxPermSize=1024m -Djava.awt.headless=true -Djava.library.path=/usr/lib"
------------------------------------------------------------------------
1.参数的含义
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
-vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了
-Xms128m JVM初始分配的堆内存
-Xmx512m JVM最大允许分配的堆内存,按需分配
-XX:PermSize=64M JVM初始分配的非堆内存
-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配
2.堆内存分配
JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。
说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。
3.非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
4.JVM内存限制(最大值)
首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,
这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。
转载于:https://www.cnblogs.com/wuyida/p/6300875.html
Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案相关推荐
- 在eclipse启动tomcat运行一个web程序,报java.lang.OutOfMemoryError: PermGen space
错误如下: 2017-3-20 16:41:14 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() ...
- Linux下启动tomcat报java.lang.OutOfMemoryError: PermGen space
2019独角兽企业重金招聘Python工程师标准>>> 一.错误信息 java.lang.reflect.InvocationTargetException at sun.r ...
- Eclipse 报java.lang.OutOfMemoryError: PermGen space
工作时在本机测试环境发布一个web项目,Eclipse报了这个错误,网上搜罗一番,找到以下解决办法,记录一下. 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被 ...
- Eclipse 报java.lang.OutOfMemoryError: PermGen space错
转自:https://blog.csdn.net/naruto0025/article/details/78932293 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loade ...
- eclipse运行报java.lang.OutOfMemoryError: PermGen space解决方法
分享一个亲测的网址: http://blog.csdn.net/cuker919/article/details/45246073
- Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法
见:http://outofmemory.cn/java/OutOfMemoryError/outofmemoryerror-permgen-space-in-tomcat-with-eclipse ...
- Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的解决办法
原文:http://cheen.iteye.com/blog/1687420 Tomcat启动时报如下错误: java.lang.OutOfMemoryError: PermGen spa ...
- Eclipse部署多个Web项目内存溢出,java.lang.OutOfMemoryError: PermGen space
Eclipse部署多个Web项目内存溢出,java.lang.OutOfMemoryError: PermGen space >>>>>>>>>& ...
- java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: PermGen space 摘要 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域 ...
最新文章
- mysql子查询设置_什么是mysql子查询?如何利用子查询进行过滤?
- hive内置函数_flink教程flink modules详解之使用hive函数
- 一个菜鸟程序员的游戏开发心得
- Jenkins-Gitlab配置方法
- 手把手实现一条延时消息
- 使用路由和远程访问服务为Hyper-V中虚拟机实现NAT上网
- WebService应用:音乐站图片上传
- 2015 HUAS Provincial Select Contest #2~C
- python两个数组合并、找出中位数_leetcode刷题记录-找出这两个有序数组的中位数(python版本)...
- Linux编辑firmware的文件,Linux中request_firmware 的用法
- python类加载_如何重新加载一个类在python shell?
- Qt中如何给按钮加图标(背景图片)
- 神经网络与深度学习2
- Android类参考---Fragment(二)
- Java map转JSON
- 计算机存储器的容量单位有哪些,存储器容量单位有哪些,它们之间的关系是什么?...
- Uniapp微信雪糕刺客单页小程序源码
- 用华为手机拍照别直接按快门,先打开这个按钮,效果翻倍堪比单反
- 《根道果:禅修的方法与次第》读后感
- Windows11安装Android子系统——安装篇