Avatar ·

JVM启动参数-Xms和-Xmx是什么,它们如何影响内存?

大家好!我是一名初级Java开发者,最近在服务器上运行应用程序时遇到了问题。应用程序处理大型CSV文件(约500 MB),我发现它时不时会崩溃并报错OutOfMemoryError: Java heap space。

我通过命令行大致这样启动应用程序:

java -jar myapp.jar

同事说需要添加-Xms和-Xmx参数,但我不太明白它们的作用。我尝试随机添加了这些参数:

java -Xms512m -Xmx1024m -jar myapp.jar

之后错误出现频率降低了,但当文件特别大时仍然偶尔会发生。我读过文档,但对新手来说似乎太复杂了。能否用简单的话解释一下:

  • -Xms和-Xmx是什么?
  • 它们之间有什么区别?
  • 如何正确选择值?
  • 为什么我的应用程序仍然会崩溃?