热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

完美解决PermGenspace异常的问题

这篇文章主要介绍了完美解决PermGenspace异常的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

开发中遇到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

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

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


推荐阅读
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍如何在Linux服务器之间使用SCP命令进行文件传输。SCP(Secure Copy Protocol)是一种基于SSH的安全文件传输协议,支持从远程机器复制文件到本地服务器或反之。示例包括从192.168.45.147复制tomcat目录到本地/home路径。 ... [详细]
  • 本文将深入探讨PHP编程语言的基本概念,并解释PHP概念股的含义。通过详细解析,帮助读者理解PHP在Web开发和股票市场中的重要性。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Linux 系统启动故障排除指南:MBR 和 GRUB 问题
    本文详细介绍了 Linux 系统启动过程中常见的 MBR 扇区和 GRUB 引导程序故障及其解决方案,涵盖从备份、模拟故障到恢复的具体步骤。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • Windows 系统下 MySQL 8.0.11 的安装与配置
    本文详细介绍了在 Windows 操作系统中安装和配置 MySQL 8.0.11 的步骤,包括环境准备、安装过程以及后续配置,帮助用户顺利完成数据库的部署。 ... [详细]
  • 在Windows系统上安装VMware Workstation 2022的详细步骤
    本文将详细介绍如何在Windows系统上安装VMware Workstation 2022。包括从官方网站下载软件、选择合适的版本以及安装过程中的关键步骤。此外,还将提供一些激活密钥供参考。 ... [详细]
  • 本文探讨了如何在 PHP 的 Eloquent ORM 中实现数据表之间的关联查询,并通过具体示例详细解释了如何将关联数据嵌入到查询结果中。这不仅提高了数据查询的效率,还简化了代码逻辑。 ... [详细]
author-avatar
江苏蓝凯-我家在装修_708
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有