当前位置:主页 > 新闻中心 > 媒体关注 >

媒体关注

程序员遇到java内存溢出的问题应该如何解决

发布时间:2020-03-08  来源:未知  作者:木木

java编程开发语言是目前使用范围非常广泛的一种编程开发语言,而今天我们就一起来了解一下,当程序员遇到java内存溢出的问题应该如何解决。

程序员遇到java内存溢出的问题应该如何解决

1、配置应用,为堆分析做准备

任何像内存溢出这种非确定性的、时有时无的问题对于事后的分析都是一个挑战。所以,好的处理内存溢出的方法是让JVM虚拟机转储一份JVM虚拟机内存状态的堆文件。

SunHotSpotJVM有一种方法可以引导JVM转储内存溢出时的堆状态到一个文件中。其标准格式为.hprof。所以,为了实现这种操作,向无图 亚洲 欧美 偷拍JVM启动项中添加XX:+HeapDumpOnOutOfMemoryError。因为内存溢出可能经过很长一段时间才会发生,向生产系统增加这一选项也是必须的。

如果堆转储.hprof文件必须被写在一个特定的文件系统位置,那么就添加目录途径到XX:HeapDumpPath。只需确保该应用对于指定目录途径始终拥有写入权限。

2、解决内存问题

修复引起内存溢出的代码:由于应用在某段时间内增量添加了一个对象而没有清除其引用(来自正在运行的应用程序的对象引用),导致不得不修复程序错误。例如,这一错误可能是插入了一个哈希表,其中的业务对象会逐渐增加,然而业务逻辑和事务在完成之后并没有删除这些对象。

增加内存大值作为一种修复方法。在了解了运行内存特征和堆之后,可能必须增加分配的大堆内存来避免再次发生内存溢出,因为推荐的大内存值不能够满足应用程序的稳定性。所以,应用程序可能不得不基于堆分析器的评估,将Java-Xmx的flag信息更新成一个更高值后再来运行。

3、检查代码

代码检查需要查看是不是由socket套接字被关闭导致的。在这种情况下,它显示与I/O相关的所有流,需要被正确地关闭。在一点上,我们怀疑JVM是始作俑者。实际上,在OpenJDK6.0.XX的GC(垃圾收集器)上的代码中有一个BUG。

【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!




上一篇:区块链技术在物联网环境下的应用需求都有哪些

下一篇:没有了