问题标签 [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.
memory-leaks - 元空间内存泄漏
我们最近将我们的应用程序从 Java 7 迁移到了 Java 8。从切换之日起,我们就开始看到 Out of Memory Metaspace 问题。我们尝试增加元空间空间大小,但没有帮助。Jvisual VM(和 Jconsole)显示每天有 60 -70 K 的类文件被加载到内存中,并且没有任何内容被卸载。我们尝试使用各种 GC 算法,但没有任何帮助。在从不 Java 版本中还有什么可能出错的地方?
java - MaxMetaSpace 和 CompressedClassSpaceSize
我可以理解何时启用 UseCompressedClassPointers,MaxMetaspace 不相关,CompressedClassSpaceSize 确定元空间的大小?
因为来自Oracle doc https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/memleaks002.html(线程thread_name中的异常部分:java.lang.OutOfMemoryError:压缩的类空间)
- 如果使用 UseCompressedClassPointers,
则可用于类元数据的空间量固定为
CompressedClassSpaceSize 量。
如果UseCompressedClassPointers所需的空间超过 CompressedClassSpaceSize,则会 抛出
带有详细 Compressed 类空间的 java.lang.OutOfMemoryError 。
请给我一些链接来解释 CompressedClassSpaceSize & Metaspace 中存储的内容
java - 如何确定 Java 8 元空间的理想大小
我们正在将我们的 Web 应用程序从 Java 7 迁移到 Java 8。我们已经定义了PermSize
jvm 参数参数。
由于 Java 8 将忽略此参数,因此这是没有用的。元空间是在 Java 8 中引入的,它的默认大小是无限的(仅限于物理内存)并具有动态增长。
我的问题是我是否需要为我的 Web 应用程序找出最佳值metaspace
jvm 参数的最佳值,或者使用默认值是一个好主意?
更新:
更多关于我的 Web 应用程序:我的 Web 应用程序基于struts
和spring
框架。它通常需要4k
请求/分钟。此应用程序部署在 tomcat 8.5 上,它不托管任何其他 Web 应用程序。但是,有多个 tomcat 实例在同一个虚拟机上运行。当前-Xms
和-Xmx
值设置为1g
。
java-8 - Java8 MetaspaceSize 标志不起作用
我有一个简单的测试代码,将-XX:MetaspaceSize和-XX:MaxMetaspaceSize设置为相同的值。我认为元空间不应该动态调整大小。但是从我的测试(检查 VisualVM GC 中的元空间图并通过 jstat 打印日志),我看到元空间不断从低值增长到我设置的最大值。那么-XX:MetaspaceSize不工作吗?
我的测试代码:
虚拟机参数:
爪哇版:
jstat结果:(MC值一直增长到10m左右)
java - 处理 MetaSpace 泄漏问题(内存不足)
我正在研究一个应用程序一段时间。最近,在我的工作场所,对应用程序(使用 Jersey REST 和 Spring 框架实现的 Java Enterprise Web 应用程序)进行了一些重新设计。
我们注意到由于内存不足异常,应用程序开始抛出错误。我们注意到应用程序堆是一致的,但是元空间一直在增加,而根本没有减少。
作为其中的一部分,我已经开始分析性能统计信息,JCMD GC.class_stats。我一直看到一些 JAXB 类正在增加,但没有减少。这些 JAXB 类应该在 Web 请求完成后关闭。你能帮我解决这个问题吗?
提前致谢。
java-8 - 在 Wildfly 11 中减少类加载内存占用的最佳选择是什么?
我正在使用 Wildfly 11 和 Java 8。由于缺少 MetaSpace,我遇到了 OutOfMemory 错误,因此我正在寻找优化类加载的方法。我有几个在同一个应用服务器上运行的 WAR 文件。大多数包含相同类型的类
我想知道这是否是一个问题(例如,Wildfly 尝试为不同的应用程序加载同一个类两次),如果是这样,我可以使用哪些选项来减少由于类加载而导致的内存占用?
java - java 8中静态变量存储在哪里?
静态变量存储在哪里?正如我在 java 7 中所知道的那样,它是 PermGen。但是 java 8 迁移到了 MetaSpace。那么它们是存储在 MetaSpace 中还是存在其他位置?
java - 为什么 Oracle 规范没有说明元空间?
我们都知道,自从 Java 1.8 PermGen 被移除并被 Metaspace 取代。
我已经阅读了很多关于 Metaspace 的主题,并且我完全确定它存在,但是今天我被问到关于 Oracle JVM 规范的参考,其中提到了关于元空间,但是使用搜索所有规范我没有找到任何匹配的词“元空间”。
有人可以与我分享此信息的链接或告诉我为什么我没有找到任何有关它的信息吗?
hotspot - 如何在 jdk 8 之后检查热点中的 instanceKlass?
在jdk8之前,instanceKlass对象是放在PermGen区的,现在PermGen被Metaspace代替,Metaspace是基于native空间的。那么问题来了,在 jdk 7 上,你可以通过 HSDB 检查 vm 对象,但是现在 HSDB 无法访问 instanceKlass 对象,例如,我找不到检查 ConstantPoolCache 的位置。
java - Java Hosting 基于 APR 的 Apache Tomcat 错误
我认为这是一个两部分的问题。我的版本:我使用 Java jdk1.8.0_144、Server JVM jdk1.8.0_77、Server Tomcat apache-tomcat-8.5.23 开发
错误:2018 年 4 月 16 日 11:57:31.041 严重 [http-nio-13571-exec-1] org.apache.catalina.core.AprLifecycleListener.init 基于 APR 的 Apache Tomcat Native 的不兼容版本 [1.1.32]库已安装,而 Tomcat 需要版本 [1.2.14]
我尝试了不同的 Java 版本,包括 Java 9 和 Java 7。在这些版本上,我的应用程序甚至无法启动。我尝试了托管公司提供的 2 个不同的 Java 8 版本,但仍然出现相同的错误。
请问有什么想法吗?
然后我得到了上面的错误,在网站上什么也没做。甚至没有浏览它。几个小时后,我收到此错误:
java.lang.OutOfMemoryError:元空间
托管公司说我必须为更多内存选择更好的托管选项,然后错误就会消失?你怎么看?