首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用java 1.8强制清除metaspace

如何使用java 1.8强制清除metaspace
EN

Stack Overflow用户
提问于 2016-09-04 07:53:06
回答 1查看 5K关注 0票数 2

我最近将java版本从1.6升级到1.8。迁移到java1.8之后,元内存消耗随着时间的推移而增加(通过JConsole观察到)。此外,每次访问网页时,元空间的大小都会增加。所以,

,我有什么办法可以强行清理Metaspace吗?

,我有没有办法检查一下Metaspace的所有功能,并增加metaspace的大小?

哪个GC (SerialGC,G1,ConcMarkSweep)有效地清除了Metaspace &我应该为GC?使用哪些JVM配置

正确的metaspace操作所需的最低RAM java 1.8是多少?在我的例子中,它的内存限制为256百万内存,在一个微型linux盒上具有相同的交换大小。

如果我们使用XX:MaxMetaSpaceSize限制metaspace大小,JVM将引发外部内存:metaspace条件。

EN

回答 1

Stack Overflow用户

发布于 2016-09-09 10:20:04

谢谢你的回答!

我找到了Old JaxB and JDK8 Metaspace OutOfMemory Issue,来描述和我的问题一样的问题。

有了"-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true",我就能够稳定地使用metaspace。

有了这个选项之后,如果我的应用程序处于空闲状态(只是定期访问一个webservice,读取xml,并将xml中的细节显示到我的视图层),那么它将不再增加顶部命令输出中的内存使用量,而不是metaspace (在J控制台中)。

但是,如果我做任何手术。访问网页和执行数据库操作/文件IO等)内存使用量增加了。Java1.6的情况也是如此,但对于java1.6,用于在5-6分钟内达到正常水平的内存也是如此。但是使用java1.8,它需要10-12个小时才能达到正常水平。

以下是我的jvm配置:

代码语言:javascript
复制
java -Dsun.rmi.dgc.client.gcInterval=60000 -XX:NewRatio=3 - 
XX:MinHeapFreeRatio=60 -XX:MaxHeapFreeRatio=70 -Xmx64M -Xms32M -
XX:MetaspaceSize=12M -XX:+UseLargePagesInMetaspace -
XX:CompressedClassSpaceSize=10M -XX:+UseLargePages -
XX:+CMSClassUnloadingEnabled -
Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true - 
Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -
Dcom.sun.management.jmxremote.authenticate=false -
Dcom.sun.management.jmxremote.port=1099 -Dfile.encoding=UTF8 -
Dorg.apache.jasper.compiler.disablejsr199=true -Duser.timezone=$timezone -jar start.jar
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39314727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档