问题标签 [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 - Java8 元空间和堆使用
我有这段代码可以动态生成类并加载它
我针对 Java 7 (jdk1.7.0_60) 启动了这个类,正如预期的那样,它填满了 PermGenSpace 并且堆仍未使用 图像显示 permgen 使用超时,最后 JVM 被终止
现在相同的代码在 Java 8 (jdk1.8.0_40-ea) 上运行,并且正如预期的那样,它一直在扩展本机内存 (Metaspace),但令人惊讶的是,对于 1g 的 Metaspace,它在 OldGen 中消耗了 3g 的堆(随着时间的推移,几乎是 Metaspace 的 3 倍)
图像显示 Metaspace 使用超时和系统内存使用示例
这封来自 Jon Masamitsu 的电子邮件和这张 JEP 票说
实习生
String
和班级统计数据以及一些杂项数据已移至堆
当将更多类加载到 Metaspace 时,究竟是什么导致了堆的增加?
java - PermGen 和 Metaspace 有什么区别?
在 Java 7 之前,JVM 内存中有一个称为PermGen的区域,JVM 用来保存它的类。在Java 8中,它被移除并被称为Metaspace的区域所取代。
PermGen 和 Metaspace 之间最重要的区别是什么?
我知道的唯一区别是java.lang.OutOfMemoryError: PermGen space
不能再抛出并且MaxPermSize
忽略VM参数。
tomcat - 我在哪里设置伊甸园空间?
问题摘要:
PS Eden Space附近显示的内存大小为 639.5 MB,而 JAVA_OPTS包含-Xms2558m -Xmx2558m
(2.5G) 。
细节 :
创建 seten.sh 文件后,我添加了这一行:
然后,我监视应用程序服务器的 UI 以检查内存的增加是为了什么
我很奇怪:为什么当我浏览我的应用程序时,为什么PS Old Gen保持稳定而PS Eden Space快速消耗内存。但是,PS Eden Space附近显示的内存大小为 639.5 MB。
如何增加PS伊甸园空间?我应该使用什么选项知道我们使用 Java8 ?
当我设置-Xms2558m
:我的应用程序是一个 grails 应用程序(包括 spring 框架、spring 安全性......)
memory-leaks - 如何诊断 Java 8 元空间泄漏?
我有一个具有一些有趣行为的 J2EE 应用程序......堆似乎表现良好,随着时间的推移随着垃圾收集而增长和缩小。没有明显的整体长期堆扩展。然而,元空间以每小时 20 Mb 的速度稳定增长,直到我们到达 MaxMetaspace 并遇到 OOME。我已经尝试过并行和 G1 垃圾收集器(jdk1.8.0_40)。
应用程序在执行期间没有被重新部署,所以它看起来不像是典型的类加载器泄漏。有没有人有关于如何追踪这个泄漏源的建议?
java - Java 8 元空间 - 避免减少
由于 Java 8 中的 Metaspace,我有一个简短的问题。我知道我可以使用 -XX:MetaspaceSize - 参数设置初始大小。但我想知道是否可以将这个值配置为最小大小。
我的目标是防止由于 Metaspace 大小而导致的 Full GC。通常 512 MB 对于我的应用程序来说应该足够了,但是这个值可能会随着运行时间而不同。如果需要超过 512 MB(这不应该发生),则无法避免 Full GC,这很清楚。
问候, 马蒂亚斯
jvm - Java 8:为什么元空间大小增加但加载的类数量保持不变?
在我们在 Jdk 8 上运行的应用程序中,我们使用 VisualVM 来跟踪加载的类的使用情况和元空间的使用情况。
在我们的应用程序运行的某个时间点,我们看到加载的类的数量不再增加,但是当我们的程序运行时元空间的大小仍然增加。那么除了类之外还有什么存储在元空间中,这可能导致这种情况?
java - java 8在运行时找出元空间的大小
Java 8 使用能够动态扩展的元空间。GC 满时将在元空间上运行。这是否意味着 GC 永远不会在元空间上运行?
我的 Java 8 应用程序正在使用大量内存。我想知道运行时我的元空间的大小。我怎么做?
我正在考虑设置MaxMetaspaceSize
。我应该把它设置成什么?有什么建议吗?
java - Spring Boot 元空间内存泄漏
我正在使用 Spring Boot 1.2.5 和 Java 1.8.0_51,一旦应用程序启动并运行,元空间就会以每小时 10MB 的速度持续增长。似乎是类加载泄漏之类的,我只是无法弄清楚是什么原因造成的。
该应用程序使用 Jetty 而不是 Tomcat 运行。
我有一个正在运行的 Reactor 事件循环和几个预定的进程。然而,当我拒绝它们时,这些仍然会发生。
这些是我正在使用的一些库:
java - 尽管允许元空间无限增长,但当它达到 1 GB 时,我的进程就会崩溃
我遇到了一个奇怪的问题。
我有一台 32GB 内存的机器。出于规模测试的目的,我编写了一个程序,该程序在不同的类加载器中生成某个应用程序的多个实例。我的目标是在 1 个进程中在同一个应用程序上托管 1000 个实例。我逐渐完成了这项任务。我能够毫无问题地托管多达 800 个实例。
当我增加到 1000 个实例时,出现内存不足错误。有关完整日志hs_err.log,请参阅以下文件。
如您所见,我的程序无法从元空间分配。当元空间达到大约 1 GB 的内存时,这种情况总是会发生。根据 Java 文档,元空间区域不受限制,我的机器有足够的内存来容纳超过 1 GB 的元空间。
当我的进程崩溃时,我看到以下消息:
我的问题是:
- 元空间大小是否有一些未记录的限制(偶然是 1 GB)?
- 我的程序可以使用的类加载器的数量是否有限制?
- 您是否看到其他一些线索来解释为什么我的程序从附件中崩溃?
谢谢