Minecraft Java服务器中可能导致内存泄漏的原因

您所在的位置:网站首页 我的世界内存爆满 Minecraft Java服务器中可能导致内存泄漏的原因

Minecraft Java服务器中可能导致内存泄漏的原因

2024-07-15 17:41| 来源: 网络整理| 查看: 265

最近发现,在运行Java程序的时候,开启这两个选项可能会导致内存泄漏。

-XX:+AggressiveOpts

-XX:+UseCompressedOops

1. -XX:+AggressiveOpts

        这个选项的意思是“尽一切所能提高运行的性能”,就如名字一样,尽一切所能的激进方式,多多少少会带来不稳定和问题,而在我运行Minecraft的过程中,这个选项导致了内存泄漏。

2.-XX:+UseCompressedOops

        这个选项的意思是使用压缩指针,这个选项只在64位的Java中可用,意在于64位环境中使用32位的类指针以减少内存开销,然而这个选项某些情况下也需要慎用,因为它同样在Minecraft服务器的运行中影响了gc导致内存无法正常回收。

总结:在Minecraft Java版服务器的运行中,这两个选项中的两个或其中一个,开启后都会影响gc的工作,导致内存无法正常回收。一般情况下,gc释放掉的内存,Java是不会给回系统的,但是这部分内存在Java环境內仍然是可用的,而即使程序所使用的内存已经达到上限,依旧可以通过gc清除垃圾和老年代的部分来释放新的内存让程序正常运行,而Minecraft的服务器也理应如此,占用内存随着运行时间增大是正常现象,因为玩家跑图弄东西会产生大量数据,但是无用数据得不到清除,时间一久内存泄漏就会出现整台服务器宕掉的情况,关掉这两个选项,就会回到正常运行的状况。

以上是大概的前因后果,具体的流程很难一两句话讲清楚,但是,如果你运行Java程序时遇到了类似的问题,可以试试这个方法来排除故障。(运行Java程序,除了-Xmx和-Xms,其它参数都是选用,一股脑开一堆东西可能会起反效果)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3