我在c#NET中编写了一个包装器应用程序,它在.jar文件运行时运行,在.jar文件关闭时关闭等等。这基本上是为了让我们的Web面板能够查询可执行文件以查找如果它实际上是否正在运行。
我已经看到了一些专门用于此软件的其他面板,可以选择在没有人连接时减少它的内存使用量。 java应用程序(Minecraft)基本上根据玩家世界的大小来缩放RAM使用量,而不是连接多少玩家。当没有人连接时,减少使用量应该是完全正常的。
对于Java应用程序,有没有办法以编程方式从C#NET减少RAM使用?
答案 0 :(得分:1)
没有
为什么不呢?因为您无法以这种方式控制Java程序,原因有两个:
minecraft.jar
请求512MiB的RAM,他将获得512MiB的RAM。您不能只在应用程序上全部Hey, there's no one connected so I disallow you to allocate memory
。我的意思是,你可以......但我不认为你想要那个(这会引发异常和奇怪的副作用)。编辑:实现此行为的唯一简单方法是更改程序。由于Minecraft不是免费/开源软件,因此您唯一能做的就是提交错误/功能请求。甚至可能有关于如何实现更好的内存使用的扩展信息和布局概念。
我的意思是,我很确定通过Java程序大量使用反射也可以实现这一点......但事情从那里开始走下坡路。
答案 1 :(得分:1)
AFAIK,没有办法告诉JVM将常规堆内存返回给操作系统...除了告诉它完全退出。