Optimization 如何优化JVM的内存使用?

Optimization 如何优化JVM的内存使用?,optimization,jvm,java-service-wrapper,Optimization,Jvm,Java Service Wrapper,我想问一下,这里是否有人知道如何优化JVM的内存使用? 我们正在使用一个调用JVM的java服务包装器(YAJSW),物理内存使用量约为40MB。我想把这个减少到5-10MB。我如何做到这一点 到目前为止,我只有以下配置: java=-Xmx1024m 我也试过: java=-Xms1024m-Xmx1024m-XX:NewSize=512m-XX:MaxNewSize=512m-XX:surviorratio=2-XX:PermSize=256m-XX:MaxPermSize=256m 但这些

我想问一下,这里是否有人知道如何优化JVM的内存使用? 我们正在使用一个调用JVM的java服务包装器(YAJSW),物理内存使用量约为40MB。我想把这个减少到5-10MB。我如何做到这一点

到目前为止,我只有以下配置:

java=-Xmx1024m

我也试过:

java=-Xms1024m-Xmx1024m-XX:NewSize=512m-XX:MaxNewSize=512m-XX:surviorratio=2-XX:PermSize=256m-XX:MaxPermSize=256m

但这些配置设置没有任何区别。对此,正确的配置设置是什么?或者,我还需要做些什么来优化它


提前感谢您的回答。

您说的是驻留内存还是虚拟内存?在我的机器上,一个简单的
while(true)main
中,没有任何其他内容的code>已经为我提供了10 MB的驻留内存,这主要是因为内存映射的r/o库(libc、libm、librt、libpthread…)和jar。如果可能的话,进一步减少内存占用,或者在任何非平凡的应用程序中减少到10 MB,只会意味着更多的分页,从而降低速度

另一方面,虚拟内存在我的机器上是1.1GB,如果需要可以减少,但为什么要这样做呢?未使用的虚拟内存实际上不需要任何成本

编辑:除此之外,您可能还想看看另一个,尤其是MaxHeapFreeRatio。

状态:

包装器内存要求
YAJSW的灵活性是有代价的。使用java进行包装过程有很多优点。然而,我们付出了更高内存占用的java代价。JSW包装器只需要几k内存,而YAJSW的最小虚拟内存需求是90MB和40MB物理内存。该值因操作系统和功能而异


如果您的应用程序可以在32位内存限制内运行,则可以使用,因为它占用的内存较低。

您提供的数据有点奇怪。。。你说你想把内存使用量减少到5-10MB,你把它设置得更多(1G的堆,256M的PermSize)。我真的不知道应该使用什么正确的参数。如果我减小堆大小,服务包装的应用程序可能会受到影响。不管怎样,你是在建议我减小堆大小和堆大小吗?这些的容许值是多少?(堆为512,PermSize为64?)我不知道提供的任何选项会如何影响最小内存使用率?我会尝试像-XX:+UseCompressedStrings或-XX:+UseCompressedDoops(在64位虚拟机上)这样的东西-实际上,如果内存很重要,那么我希望您使用32位虚拟机,这样第二个虚拟机就不会有帮助了。@Voo:我实际上使用的是64位虚拟机。我试图使用-XX:+UseCompressedString,但是..但是也没有任何区别。是的,我说的是驻留内存。我试过MaxHeapFreeRatio,到目前为止,我没有看到任何区别。但是,感谢您的链接:)如果您关心10MB的驻留内存使用,这是否意味着您同时运行了很多应用程序实例?如果是,也许,你应该考虑在内存中切换到一个应用程序,它为很多客户服务?