java - Java8中的压缩类空间与堆成正比吗?

标签 java

我收到“压缩类空间”的 OutOfMemoryError 错误。据我了解,默认值是 1GB,可以禁用它,并且我可以增加空间。我想了解的是压缩类空间区域的使用是否随着堆的大小而变化。即,如果我有一个 512mb 的堆,它会使用与 16gb 的堆相同的压缩类空间吗?

最佳答案

“压缩类空间”是元空间的一部分。更改元空间此区域的大小不会直接影响堆大小。但是,它确实会消耗虚拟内存,这可能会限制常规 Java 堆的可用内存。

If I have a 512mb heap will it use around the same space as say a heap with 16gb?

也许是的。压缩的类空间包含类代码...而不是实例(对象)。在正常的程序中,使用的类的数量及其大小是恒定的,并且与实例的数量或大小无关。

一个异常(exception)是您的应用程序过度使用/滥用动态代理。事实上,这可能是 OOME 的根本原因!

关于java - Java8中的压缩类空间与堆成正比吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59745050/

相关文章:

Java 字符集InputStreamReader、文件 channel 差异

java - 如何在测试之间重新创建 EntityManagerFactory

java - 在此工作簿中检测到一个或多个无效名称。这些无效名称已更改为#REF

java - 使用可变成员变量构造 Test 对象的正确方法

java - J2EE - 动态 Web 项目 - 无法运行我的 helloworld 应用程序

java - 在加载 Activity 之前加载 Admob 广告,以便它们立即出现而不是在 3-5 秒后出现?

java - Eclipse 上的 Groovy 错误

Java TableViewer - 在选择时更改单元格图像

java - 如何在执行时设置spring bootstrap.properties

java - 谷歌地图不加载 fragment