2016 - 2024

感恩一路有你

如何确定默认的java堆大小 如何计算应该给jvm的堆多少空间?

浏览量:1855 时间:2023-02-13 18:34:37 作者:采采

如何确定默认的java堆大小 如何计算应该给jvm的堆多少空间?

idea堆内存默认大小?

打开IDwas的jvm堆大小默认情况下没有配置,那堆有没有大小?

如果有默认值,我可以 t记住具体的默认值,但不能超过256M m,可以不配置jvm堆大小手动生成javacore,或者在出现outofmemory错误时分析nativestdout或nativestderr中的错误,也可以使用工具分析javacor

如何计算应该给jvm的堆多少空间?

eclipse的jvm设置方法如下:

当eclipse默认启动时,与启动相关的jvm参数是在eclips:eclipse-vmargs。

-vmargs-xms 128m-xmx 512m-xxe CHO 5-@ . comper msize = 64m-xxe CHO 5-@ . commaxp:p:maxpermsize设置,默认为物理内存的1/4。

echo2-@。Com在Java8及以后的版本中,我们可以用以下命令设置元空间的初始大小和最大大小:-xx :metaspacesize = n-设置元空间的初始(和最小大小)。-xx:maxmetaspacesize = n-设置元空间的最大大小。

元空间大小是多少?

从我们的角度来看,应该注意,元空间的默认最大大小是无限的。相反,java7和更早版本中PermGen的默认最大大小在32位JVM上是64mb,在64位JVM上是82mb。

Metaspace会收集垃圾吗?

一旦类元数据的使用达到 "MaxMetaspac——从Java8版本开始;它取代了旧的PermGen内存空间。最大的区别是它如何处理内存分配。因此,默认情况下,本地内存区域会自动增长。

Java8中PermGen空格的替换是什么?

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

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

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

这将导致:永久内存溢出。

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

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

-xx:permsize = n-设置永久生成的空间的初始(和最小)大小。

-xx:maxperm size = n-设置永久生成的空间的最大大小。

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

-xx:metaspace size = n-设置元空间的初始(和最小)大小。

-xx:maxmetaspacesize = n-设置元空间的最大大小。

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

Java堆:管理Java对象的空间

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

其他空间:java vm和本地方法使用的堆栈空间和C堆空间。

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

注意:

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

如果在Java操作环境变量(无论是-Xmx还是-xx:maxmetaspacesize)中指定了设置最大大小的Java选项,则每个空间的最大大小是根据 "用JavaOPTS环境变量指定。

在具有高多重性的请求或具有深度调用堆栈的方法的情况下,如果进程输出以下消息并失败,这意味着超过了容器中的最大内存值,因此 "指定JAVAOPTS环境变量的使用是需要的。

记忆中的exit_description:,: 143

使用JAVA_OPTS环境变量指定元空间的默认大小。

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

估计每个空间需要的最大大小,用Java选项设置,使空间的总大小不超过(maxSizeOfAllSpaces的结果(默认为1gb)-300 MB)(见注1)。300 MB用于管理Java应用程序进程。

用户应该验证并负责选择正确的Java选项,而不是Java选项中的-Xmx。以及-xx:maxmetaspacesize。

注意:

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

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

字节大小可以用-Xmx和-xx:maxmetaspacesize指定。下列字符可以指定为单位:

对于KB(千字节): "k "or "k "

对于MB(兆字节): "m "or "m "

对于GB: "g "or "g "

空间 大小 PermGen 内存

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。