问题标签 [metaspace]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Coldfusion 元空间 null
使用 CF2016 我在开发人员环境和生产环境中都看到了这个错误,但频率较低。
阅读一些论坛了解垃圾收集器的想法并设法实现此代码来强制收集器:
奇怪的是,运行时内存有很多空间(通常有一半空间是空闲的)但Metaspace Null
仍然出现。
另一个方法可能是加载的类,也许它们不会被自动销毁。但我找不到查看加载的方法。
到目前为止,“解决方案”是重新启动服务器,以便我可以正常运行。我能够减少将最大 JVM 堆大小增加到 1024MB 但仍然发生的错误频率
而且堆栈跟踪......很难到达ghost文件中的-1行!xD
Java版本:1.8.0_112
垃圾收集器:-XX:+UseParallelGC(默认)
VM 的参数(为了便于阅读,换行)
java - 防止对象在 JVM 的生命周期内被垃圾收集
我有大量的池化对象,它们将在 JVM 的生命周期中不断地重用。这些对象不应该被垃圾收集。
我想要一种优化 JVM 的方法,以从不尝试(并浪费时间)检查垃圾收集的资格。这一点尤其重要,因为池对象的数量会非常高,并且会导致 CPU 和 GC 压力。
在一段时间内,这些大量对象将进入 JVM old-gen,然后是元空间,我想要一种方法来提示/优化 JVM,即使在 Full-GC 期间检查这些大量对象的 GC 资格(导致更长的 jvm pauses) 是浪费时间,永远不要尝试它们。
针对这种情况进行优化的正确方法是什么?
一种选择是使用堆外内存。我可以将这些对象保留在 JVM 堆中以避免堆外复杂性但仍然优化 GC 吗?
java-8 - Java 8 - 它会改变最终字符串变量的最终位置吗?
我找不到这个问题,对不起,如果我的搜索技巧错过了!
在 Java 8 之前,我认为声明如下:
最好声明为:
与 post PermGen(现在的 Metaspace)还有区别吗?对这种差异有什么-XX:+UseStringDeduplication
影响(无论如何对于字符串)?
java-8 - Wildfly 是否有任何推荐的元空间设置大小?
WildFly 的元空间大小是否有任何最佳实践?
例如,对于最大堆内存,我将进行以下设置:
((未运行 Wildfly 的内存) * 2) - (可用内存总量)
如果我不指定MaxMetaspaceSize我知道 Metaspace 会自动增加,但这是一个好习惯吗?
提前致谢
performance - 随着元空间的增长,应用程序正在放缓
我刚刚从 grails 2.4.3 迁移到 grails 2.5.6,从 Java 7 迁移到 Java 8。我正在尝试在我的应用程序中设置最佳元空间大小。
实际元空间大小对应用程序性能有很大影响:
使用的元空间和响应平均时间:
- 200 MB - 339 毫秒
- 300 MB - 380 毫秒
- 400 MB - 430 毫秒
- 500 MB - 460 毫秒
- 600 MB - 530 毫秒
元空间在 90 分钟内从应用程序开始增长到 620MB。
这是我的实际 gc 设置:
当 MaxMetaspaceSize 设置为 512M 时,运行几个小时后,我的应用程序会在一小时内减慢 1 或 2 倍。响应时间约为 10 秒。
有人遇到过这样的问题吗?在您的应用程序中,元空间对性能有这样的影响吗?
java - JVM 元空间在次要垃圾回收后被填充
我一直在研究 Java 内存管理和堆内存中的各个部分,例如 eden、s0、s1、old gen 和元空间。我使用 VisualGC 来跟踪堆的不同部分之间的内存填充情况。我注意到在第一次垃圾回收后元空间区域占用的内存量急剧增加。
这是 VisualGC 表示的图像:
我想了解第一次 gc 后添加到元空间的内容。我做了研究,但无法得到答案。这里有什么帮助吗?
java - Java 8 中的 Java 内存区域
我已经阅读了很多关于 java 内存区域的内容,但看起来它只是一团糟。主要是由于引入了一个新MetaSpace
区域而不是PermGen
在 java8 中。现在有问题:
heap
java8+中包含哪些区域?static
方法和变量在 java8 和 java8+ 之前存储在哪里?MetaSpace
除了类元数据信息之外,是否存储任何内容?- 内存区域的结构是否取决于实现
JVM
?
谢谢您的回答。
android - 升级到 Gradle 5 和 Android 插件 3.3 后,我的构建失败并出现“元空间”
这发生在我从 4.10.3 升级到 Gradle 5.0 以及 Android Gradle Plugin 从 3.2.1 升级到 3.3.0-rc03(后者是因为它是第一个正式支持 Gradle 5 的 AGP 版本)时。
当我尝试在此之后同步我的项目时,我收到一个错误。错误只说:
随后的构建也发出了这个错误,或者更模糊的东西,比如:
这个问题没有明显的解决方案。搜索“gradle metaspace”会找到 Gradle 5 的发行说明,这些说明本身仅在此处引用:
#7385 - 限制 Gradle 使用的元空间
问题本身并不是最有帮助的。
java - Java 中如何管理 Metaspace 和 Native Area 内存?
据我了解,JVM 内的Native Area完全禁止垃圾收集器使用。元空间所在的Native Area内部。在前面提到的元空间中,我们有常量池、字段和方法数据等区域。
由于本机区域是由 C++ 内存管理管理的(或者至少我是这么理解的),为什么不是固定大小的 Metaspace,而是根据需要多少内存而动态增长,不会运行出记忆?元空间是否允许垃圾收集器,但本机区域的其余部分不允许?C++ 是否动态管理那里的内存?