Minecraft Java服务器中可能导致内存泄漏的原因 |
您所在的位置:网站首页 › 我的世界内存爆满 › Minecraft Java服务器中可能导致内存泄漏的原因 |
最近发现,在运行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 |