当前位置:首页> 正文

jvm设置堆内存参数|jvm堆内存调多大

jvm设置堆内存参数|jvm堆内存调多大

jvm设置堆内存参数

JVM性能调优有很多设置,这个参考JVM参数即可. 主要调优的目的: 控制GC的行为.GC是一个后台处理,但是它也是会消耗系统性能的,因此经常会根据系统运行的程序的特性来更改GC行为 控制JVM堆栈大小.一般来说,JVM在内存分配上不需要你修改,(举例)但是当你的程序新生代对象在某个时间段产生的比较多的时候,就需要控制新生代的堆大小.同时,还要需要控制总的JVM大小避免内存溢出 控制JVM线程的内存分配.如果是多线程程序,产生线程和线程运行所消耗的内存也是可以控制的,需要通过一定时间的观测后,配置最优结果

jvm堆内存调多大

有时候程序会碰到java.lang.OutOfMemoryError,这个主要是JVM启动参数没有配好引起的,打开eclipse的eclipse.ini会看到如下参数:

-vmargs-Xms128M-Xmx512M-XX:PermSize=64M-XX:MaxPermSize=128M-vmargs:用来说明后面的就是JVM的参数了-Xms:JVM初始分配的堆内存-Xmx:JVM最大允许分配的堆内存,按需分配-XX:PermSize:JVM初始分配的非堆内存-XX:MaxPermSize:JVM最大允许分配的非堆内存,按需分配

jvm设置堆内存参数设定

-Xms 初始堆大小

-Xmx 最大堆大小

-Xmn 年轻代大小(1.4or lator)

-XX:NewSize 设置年轻代大小(for 1.3/1.4)

-XX:MaxNewSize 年轻代最大值(for 1.3/1.4)

-XX:PermSize 设置持久代(perm gen)初始值

-XX:MaxPermSize 设置持久代最大值

-Xss 每个线程的堆栈大小

-XX:ThreadStackSize Thread Stack Size

-XX:NewRatio 年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)

-XX:SurvivorRatio Eden区与Survivor区的大小比值

-XX:LargePageSizeInBytes 内存页的大小不可设置过大, 会影响Perm的大小

-XX:+UseFastAccessorMethods 原始类型的快速优化

-XX:+DisableExplicitGC 关闭System.gc()

-XX:MaxTenuringThreshold 垃圾最大年龄

jvm 堆内存设置

eclipse的jvm设置方法如下:

默认方式启动eclipse时,有关启动时jvm参数是在eclipse安装目录下的eclipse.ini文件中指定的.在命令行下,也可以通过参数-vmargs来达到此目的.其命令格式为:eclipse-vmargs

-vmargs-xms128m-xmx512m-xx:permsize=64m-xx:maxpermsize=128m

堆内存分配

jvm初始分配的内存由-xms指定,默认是物理内存的1/64;jvm最大分配的内存由-xmx指定,默认是物理内存的1/4.默认空余堆内存小于40%时,jvm就会增大堆直到-xmx的最大限制;空余堆内存大于70%时,jvm会减少堆直到-xms的最小限制.因此服务器一般设置-xms、-xmx相等以避免在每次gc后调整堆的大小.

非堆内存分配

jvm使用-xx:permsize设置非堆内存初始值,默认是物理内存的1/64;由xx:maxpermsize设置最大非堆内存的大小,默认是物理内存的1/4.

jvm配置堆内存初始值参数

在Java8及以后的版本中,我们可以使用以下命令设置元空间的初始大小和最大大小:-XX:MetaspaceSize=N-设置元空间的初始(和最小大小)。-XX: MaxMetaspaceSize=N-设置元空间的最大大小。

什么是元空间Metaspace Size大小?

从我们的角度来看,需要注意的是,Metaspace的默认最大大小是无限的。相反,java7及更早版本的PermGen在32位JVM上的默认最大大小为64mb,在64位JVM上为82mb。

Metaspace是否会进行收集垃圾?

一旦类元数据使用量达到“MaxMetaspaceSize”,就会触发死类和类加载器的垃圾收集。显然需要对元空间进行适当的监视和调优,以限制此类垃圾收集的频率或延迟。

什么是Java中的元空间内存?

简单地说,Metaspace是一个新的内存空间——从Java8版本开始;它取代了旧的PermGen内存空间。最大的区别在于它如何处理内存分配。因此,默认情况下,本机内存区域会自动增长。

Java8中PermGen空间的替代品是什么?

在Java8中,PermGen空间被元空间取代。PermSize和MaxPermSize JVM参数将被忽略,如果在启动时出现,则会发出警告。类元数据的大多数分配现在都是从本机内存中分配的。

PermGen是永久生成代的缩写,它是一个特殊的堆空间,它与主Java堆分开,JVM在主堆中跟踪已加载类的元数据。在Java8中,PermGen被重命名为Metaspace—有一些细微的区别。从我们的角度来看,需要注意的是Metaspace有一个无限制的默认最大大小。相反,java7及更早版本的PermGen在32位JVM上的默认最大大小为64mb,在64位版本上为82mb。当然,这些不同于初始尺寸。Java7和更早版本的初始PermGen空间大约为12-21MB。

值得一提的是,在Java7之前,内部字符串通常保存在PermGen上。

这会导致 java.lang.OutOfMemoryError:永久代内存溢出

无论何时需要调整PermGen/Metaspace的大小,JVM都会像对待标准堆一样进行调整。调整这些空间的大小需要一个完整的GC,这通常是一个昂贵的操作。它通常可以在启动时观察到,当许多类被加载时。尤其是当应用程序依赖于许多外部库时。如果在启动过程中有很多完整的gc,通常就是因为这个。在这种情况下,增加初始大小可以提高启动性能。

要增加PermGen,我们有以下命令:

-XX: PermSize=N-设置永久生成空间的初始(和最小大小)。

-XX: MaxPermSize=N-设置永久生成空间的最大大小。

在Java 8及更高版本中,我们可以使用以下命令设置元空间的初始大小和最大大小:

-XX: MetaspaceSize=N-设置元空间的初始(和最小大小)。

-XX: MaxMetaspaceSize=N-设置元空间的最大大小。

对于与Java进程在内存空间中使用的区域相关的大小调整,需要考虑以下几个方面。

Java堆:管理Java对象的空间

元空间:管理类信息的空间

其他空间:堆栈空间,以及java vm和本机方法使用的C堆空间

可以使用以下两种方法来调整上述空间的大小:

注意:

如果上面计算的元空间的最大大小小于64 MB,则该空间的最大大小将设置为64 MB。Java堆和其他空间的最大大小计算如下:将((MaxSizeFallSpaces-100MB)-64 MB)的结果分配给Java堆和其他空间,比例分别为75%和15%。

如果在Java操作环境变量中指定了设置最大大小的Java选项(无论是-Xmx还是-XX:MaxMetaspaceSize),则根据“使用Java\OPTS环境变量指定”中描述的方法确定每个空间的最大大小。

在具有高多重性的请求或具有深调用堆栈的方法的情况下,如果进程输出下面的消息并失败,则表示超出容器中的最大内存值,因此需要在“指定使用JAVA\OPTS环境变量”中描述的调优。

exit_description: out of memory, exit_status: 143

使用JAVA_OPTS环境变量指定Metaspace默认大小

指定一个Java选项,该选项设置Java_OPTS环境变量中每个空间的大小。

估计每个空间所需的最大大小,并使用Java选项进行设置,以使空间的总大小不超过(maxSizeOfAllSpaces(默认为1gb)-300mb的结果)(请参阅注1)。300 MB被分配给管理Java应用程序进程的空间。

用户应该验证并负责选择正确的Java选项,而不是Java选项中的-Xmx和-XX:MaxMetaspaceSize。

注意:

请参阅下表,并确保空间的最大大小总和不超过(maxSizeOfAllSpaces(默认为1 GB)-300 MB)的结果。不要省略表中的两个Java选项,因为如果省略了指定最大大小的Java选项,java VM会自动确定最大大小。

对于剩余的空间,从(maxSizeOfAllSpaces减去maxJavaHeapSize和maxMetaspaceSize的总和-300 MB)没有Java选项来配置其他空间。

字节大小可以用-Xmx和-XX:MaxMetaspaceSize指定。以下字符可以指定为单位:

对于KB(千字节):“k”或“k”

对于MB(兆字节):“m”或“m”

对于GB(GB):“g”或“g”

jvm内存参数配置如下

最大不要超过电脑的实际内存,一般是配置一半以上。

myeclipse jvm内存如何设置

1. 首先打开MyEclipse

2. 选择Window,然后点击Preferences.

3. 在对话框左边的一列选项中选择并双击Java

4. 在java子菜单下找到Installed JREs并双击,在右边选择前面有对勾的JRE,再单击右边的“Edit”按钮

5. 出现一个 Edit JRE 的对话框,在其中的Default VM Arguments: 框中,输入 -Xms128m -Xmx512m

6. 按步骤操作完成以后,Java拟虚机内存就变成最小是128M,最大是512M,再单击“finish ”关闭 Edit JRE 对话框,最后点击“OK”关闭 Preferences对话框,MyEclipse内存就变成128-512了

jvm设置堆内存大小

根据默认的比例(1:2)分配堆内存, 可以通过调整二者之间的比率NewRadio来调整二者之间的大小。

jvm设置堆大小

有默认值的,默认值具体记不清了,但应该是不超过256M的,你可以通过不配置jvm堆大小,然后手工生成javacore或者在出现outofmemory错误的时候,分析一下nativestdout或nativestderr中的错误,也可以使用工具分析一下javacore就可以看到最大的默认值。

展开全文阅读

相关内容