nev*_*int 65 java performance jvm-arguments
鉴于这两个命令
A:
$ java -Xms10G -Xmx10G myjavacode input.txt
Run Code Online (Sandbox Code Playgroud)
B:
$ java -Xms5G -Xmx5G myjavacode input.txt
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
-Xmx和-Xms影响运行过程和我的程序的输出?bru*_*nde 165
该-Xmx参数定义了堆可以为JVM获取的最大内存大小.您必须很好地了解您的程序并查看它在负载下的执行情况并相应地设置此参数.如果程序的堆内存达到最大堆大小,则较低的值可能导致OutOfMemoryExceptions或性能非常差.如果您的程序在专用服务器上运行,则可以将此参数设置得更高,因为它不会影响其他程序.
该-Xms参数设置JVM的初始堆内存大小.这意味着当您启动程序时,JVM将立即分配此数量的内存.如果您的程序从一开始就消耗大量堆内存,这将非常有用.这避免了JVM不断增加堆并可以在那里获得一些性能.如果您不知道此参数是否对您有所帮助,请不要使用它.
总之,这是一个折衷方案,您必须仅根据程序的内存行为来决定.
aka*_*okd 22
这取决于你的java使用的GC.并行GC可能在更大的内存设置上更好 - 但我不是那么专家.
一般来说,如果你有更大的内存,那么它需要进行GC编辑的频率就越低 - 垃圾就有很大的空间.但是,当涉及到GC时,GC必须处理更多内存 - 这反过来可能会更慢.