完美解决PermGen space异常的问题
作者:不一样的程序员 发布时间:2023-08-19 07:54:55
开发中遇到Eclipse报错:java.lang.OutOfMemoryError: PermGen space。
PermGen space百度翻译为:永久区域内存不足。
1. 先来一张jvm结构图:
内存不足问题一般都是发生在'堆‘上,GC作用区域也是在'堆‘上。
2. 这个'堆‘又划分成了好几块区域,包括:
新生代:包括伊甸园区和存活区。
老年代:
永久带:jdk1.8后变成元空间,元空间不再占用堆中的空间,而永久带却是在堆中开辟空间。
可以发现,堆中就有个永久区。永久区的内存溢出,其实就是堆的内存不够用。
只需要调大堆的内存大小就可以解决问题。
3. 调整堆大小的参数:
-Xms256m -Xmx1024m
-Xms:堆的初始化大小,这里设置成了256m.
-Xmx:堆最大的大小,这个设置成了1024m.
这里面就存在了一个可伸缩的空间,而这个空间的存在会损耗服务的性能。因为扩容和释放空间都是有性能损耗的。
最好的办法就是:-Xms和-Xmx设置成同样的大小。这样就不存在可伸缩的空间了。
4. jvm参数的配置位置。
a. 如果是使用tomcat服务:
修改tomcat/bin目录下的catalina.bat。(windows环境下修改文件catalina.bat, linux环境下修改文件catalina.sh)
配置在文件的第一行:
b.如果是eclipse
修改eclipse的Run Configurations。(如果是debug模式,修改Debug Configurations。)
写在此处,方便拷贝:
-Xms256m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=512m
c.如果已经被配置成了服务
这种情况,就需要修改注册表了。
c1. regedit命令打开注册表。
c2. 找到配置的tomcat服务。
修改:JvmMs,JvmMx,Options里面的参数值。
c3. 修改完毕后需要重启服务。
d. Eclipse的配置文件eclipse.ini中也可以配置jvm参数。
-vmargs
-Xms512m
-Xmx1024m
-XX:PermSize=256M
-XX:MaxPermSize=512M
至此,内存溢出的问题应该就解决了。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/xiongyouqiang/article/details/79228249


猜你喜欢
- 最近项目中的活动面板要做来回滚动卡牌预览效果,感觉自己来写的话,也能写,但是可能会比较耗时,看到Github上有开源的项目,于是就借用了,G
- 一、什么是加壳?加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。二、加壳作
- 上篇文章老王买产品 我们从最原始的基本实现方法,到简单(静态)工厂,然后使用工厂方法设计模式进行改造,最后考虑产品会产生变体,我们
- 做Android开发的童靴们肯定对系统自带的控件使用的都非常熟悉,比如Button、TextView、ImageView等。如果你问我具体使
- OverView今天在复习的时候,突然复习到我们的相机操作,但是对于相机操作,对于我来说比较复杂的是对于权限的操作。所有我们需要对我们的相机
- Spring中BeanFactory FactoryBean和ObjectFactory的三种的区别引言关于FactoryBean 和 Be
- Android ToggleButton 详解在Android的开发过程中,对于ToggleButton的使用频率也是相当的高的,下面我就来
- 算法分析一个排序算法的好坏,一般是通过下面几个关键信息来分析的,下面先介绍一下这几个关键信息,然后再将常见的排序算法的这些关键信息统计出来。
- 在VS2019创建了项目,但生成解决方案时报错: 错误 NETSDK1004找不到资产文件“H
- Canvas绘制文本时,使用FontMetrics对象,计算位置的坐标。public static class FontMetrics {
- 1. 前言Compose 具有超强的兼容性,兼容现有的所有代码,Compose 能够与现有 View 体系并存,可实现渐进式替换。这就很有意
- 问题:为什么有缓存mybatis默认开启一级缓存什么场景下必须需要关闭一级缓存场景:执行2次相同sql,但是第一次查询sql结果会加工处理,
- 建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。使用场景:当创建复杂对象的算法应该独
- 前言随着标准Java的版本更新,开发者总是可以从升级后的版本中获取想要的功能。本文将给大家详细介绍下mac下面的java9版本安装使用,分享
- 本文实例为大家分享了android短信管理器SmsManager的具体代码,供大家参考,具体内容如下需要注册的权限<uses-perm
- 前排提示,我在这个工具类加了@Component注解,如果在springboot的项目使用,记得通过@Autowired注入使用。impor
- maven配置阿里云镜像打开maven配置文件,找到标签,添加如下:<mirrors> <mirror>
- 本文实例为大家分享了Java Socket编程实现多人交互聊天室的具体代码,供大家参考,具体内容如下本项目由三个.java文件(
- 近日,Eclipse经常挂掉,都是由于JVM崩溃的原因。每次都有以下错误日志:## A fatal error has been detec
- 实际上,HashSet 和 HashMap 之间有很多相似之处,对于 HashSet 而言,系统采用 Hash 算法决定集合元素的存储位置,