完美解决PermGen space异常的问题

作者:不一样的程序员 时间:2023-08-19 07:54:55 

开发中遇到Eclipse报错:java.lang.OutOfMemoryError: PermGen space。

PermGen space百度翻译为:永久区域内存不足。

1. 先来一张jvm结构图:

完美解决PermGen space异常的问题

内存不足问题一般都是发生在'堆‘上,GC作用区域也是在'堆‘上。

2. 这个'堆‘又划分成了好几块区域,包括:

新生代:包括伊甸园区和存活区。

老年代:

永久带:jdk1.8后变成元空间,元空间不再占用堆中的空间,而永久带却是在堆中开辟空间。

完美解决PermGen space异常的问题

可以发现,堆中就有个永久区。永久区的内存溢出,其实就是堆的内存不够用。

只需要调大堆的内存大小就可以解决问题。

3. 调整堆大小的参数:


-Xms256m -Xmx1024m

-Xms:堆的初始化大小,这里设置成了256m.

-Xmx:堆最大的大小,这个设置成了1024m.

这里面就存在了一个可伸缩的空间,而这个空间的存在会损耗服务的性能。因为扩容和释放空间都是有性能损耗的。

最好的办法就是:-Xms和-Xmx设置成同样的大小。这样就不存在可伸缩的空间了。

4. jvm参数的配置位置。

a. 如果是使用tomcat服务:

修改tomcat/bin目录下的catalina.bat。(windows环境下修改文件catalina.bat, linux环境下修改文件catalina.sh)

完美解决PermGen space异常的问题

配置在文件的第一行:

完美解决PermGen space异常的问题

b.如果是eclipse

修改eclipse的Run Configurations。(如果是debug模式,修改Debug Configurations。)

完美解决PermGen space异常的问题

写在此处,方便拷贝:


-Xms256m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=512m

完美解决PermGen space异常的问题

c.如果已经被配置成了服务

这种情况,就需要修改注册表了。

c1. regedit命令打开注册表。

c2. 找到配置的tomcat服务。

完美解决PermGen space异常的问题

修改:JvmMs,JvmMx,Options里面的参数值。

c3. 修改完毕后需要重启服务。

d. Eclipse的配置文件eclipse.ini中也可以配置jvm参数。

完美解决PermGen space异常的问题


-vmargs
-Xms512m
-Xmx1024m
-XX:PermSize=256M
-XX:MaxPermSize=512M

至此,内存溢出的问题应该就解决了。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://blog.csdn.net/xiongyouqiang/article/details/79228249

标签:PermGen,space,异常
0
投稿

猜你喜欢

  • springboot-jta-atomikos多数据源事务管理实现

    2022-08-29 19:45:47
  • Spring @Conditional注解原理解析

    2022-10-04 16:09:51
  • unity将图片转换成字体的方法

    2023-02-16 22:51:09
  • 一看就懂:图解C#中的值类型、引用类型、栈、堆、ref、out

    2022-06-08 16:36:41
  • Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)

    2022-12-07 09:03:44
  • Java爬虫实现爬取京东上的手机搜索页面 HttpCliient+Jsoup

    2023-02-19 23:22:37
  • Android 内存泄漏的几种可能总结

    2022-02-27 21:43:26
  • android 大图片拖拽并缩放实现原理

    2022-11-10 05:59:55
  • Android GestureDetector实现手势滑动效果

    2023-10-01 04:37:50
  • 浅谈Java中的n种随机数产生办法

    2023-12-22 10:36:29
  • android实现通知栏下载更新app示例

    2022-01-06 01:58:56
  • SpringBoot 整合jdbc和mybatis的方法

    2023-08-10 12:51:09
  • C#调用Java类的实现方法

    2022-10-30 11:00:10
  • 如何在Springboot实现拦截器功能

    2023-01-10 01:11:38
  • 浅析Java的Hibernate框架中的缓存和延迟加载机制

    2023-04-12 15:58:00
  • SpringBoot 多Profile使用与切换方式

    2022-04-13 14:58:27
  • springboot手写一个自己的starter源码

    2021-07-31 10:18:14
  • Spring框架学习之Cache抽象详解

    2023-07-20 17:37:47
  • 浅谈C# 中的委托和事件

    2021-06-06 18:53:07
  • Android仿淘宝物流追踪的实例代码

    2021-08-19 22:57:23
  • asp之家 软件编程 m.aspxhome.com