Java 如何确定初始堆和最大堆的大小
我想在EclipseIndigo中更改初始堆(-xms)和最大堆(-xmx)大小,但我不知道必须为堆分配的正确大小。在确定与所用的应用程序相匹配的大小方面有哪些考虑?Java 如何确定初始堆和最大堆的大小,java,eclipse,jvm,heap,Java,Eclipse,Jvm,Heap,我想在EclipseIndigo中更改初始堆(-xms)和最大堆(-xmx)大小,但我不知道必须为堆分配的正确大小。在确定与所用的应用程序相匹配的大小方面有哪些考虑?有几个要考虑的事情。 首先,您说要“更改”堆和最大堆的初始大小。所以,问题很简单:你为什么需要它?例如,不久前我不得不将IntelliJ IDEA的堆设置更改为更高的值,因为它无法处理我的项目。或者,您是否有特定的理由更改堆大小 Eclipse的堆设置可以位于Eclipse.ini文件中。至少在我的Eclipse Juno中,Ecl
有几个要考虑的事情。
首先,您说要“更改”堆和最大堆的初始大小。所以,问题很简单:你为什么需要它?例如,不久前我不得不将IntelliJ IDEA的堆设置更改为更高的值,因为它无法处理我的项目。或者,您是否有特定的理由更改堆大小 Eclipse的堆设置可以位于Eclipse.ini文件中。至少在我的Eclipse Juno中,Eclipse.ini包含:-Xms40m
-Xmx512m
所以,堆的初始大小是40MB,但它可以调整大小到512MB。检查您的eclipse.ini-数字是否相同
而且,正如我之前所问的,您能告诉我,为什么要更改堆设置吗
编辑
Eclipse Wiki上关于如何更改的精彩教程。初始堆大小
机器上物理内存的1/64或某些合理的最小值中的较大值。在J2SE5.0之前,默认的初始堆大小是一个合理的最小值,它因平台而异。您可以使用-Xms命令行选项覆盖此默认值
最大堆大小
物理内存的1/4或1GB中的较小者。在J2SE5.0之前,默认的最大堆大小是64MB。您可以使用-Xmx命令行选项覆盖此默认值
你可以通过
export _JAVA_OPTIONS=“-Xmx1g”
java-jarjconsole.jar&
拾取的JAVA选项:-Xmx1g
或
Setup JAVA_选择作为系统变量,包含以下内容:
JAVA_OPTS=“-Xms256m-Xmx512m”
之后,在命令提示符中运行以下命令:
SET JAVA_OPTS=“-Xms256m-Xmx512m”取决于您的应用程序在我的应用程序中,有处理时间的计算。处理时间的某些值与其他值不同(例如:第一个值=20123秒,第二个值=20899秒)。可能这是因为处理数据不稳定。为了获得良好的性能,我只知道应该使用正确的设置设置堆大小,并将垃圾收集器设置为并行。如果我将堆大小设置得太高,系统将挂起或应用程序的性能较差。如果我将堆大小设置得太低,就会出现“内存不足”错误。回到我的问题,如何获得初始堆和最大堆的正确大小?在这种情况下,似乎只有一个选项:您必须使用不同的参数测试堆大小,并尝试找出哪些堆设置最适合您。但是您如何知道堆大小的最佳设置?有什么迹象表明我需要知道这是否是堆大小的良好设置?你能告诉我关于堆大小设置的参数吗?好吧,有几件事表明你的内存有问题。如果您得到的是“java.lang.OutOfMemoryError:PermGen space”,那么您的应用程序运行缓慢—您必须增加内存大小。至少在我的JBoss服务器中,我有以下设置:-Xms128m-Xmx512m。为了确定堆的最佳设置,您可以使用探查器,如JProfiler或VisualVM。