我在docker中运行的应用程序面临问题。出乎意料的是,它在30分钟后坠毁。当我的应用程序处理哪个缓存时,首先怀疑的是内存利用率。
我在应用程序启动时运行该命令,它显示元空间利用率为98%,这很奇怪。
所以我的问题是,这种利用率是否表明我的应用程序将98%的操作系统内存用于JVM进程,或者98%的操作系统内存可用于JVM?
它显示了当前元空间相对于当前元空间容量的占用,即
used / capacity
此答案中说明了元空间使用的
、capacity
、提交的和
保留的
值。
这是一个相当无用的指标,因为Metaspace可以在应用程序生命周期中增长和收缩。
据我所知,对于旧一代JVM中的空间,它可以用于两个目的, 用于从年轻一代升级到老一代的物品 用于特殊用例中的新对象分配(https://stackoverflow.com/questions/9053144/will-i-encounter-java-lang-outofmemoryerror-even-with-no-lack-of-memory) 我的问题是, 在老一代中,是否还有其他利用空间
绝大部分 Java 程序员应该都见过 "java.lang.OutOfMemoryError: PermGen space "这个异常。这里的 “PermGen space”其实指的就是方法区。不过方法区和“PermGen space”又有着本质的区别。前者是 JVM 的规范,而后者则是 JVM 规范的一种实现,并且只有 HotSpot 才有 “PermGen space”,而对于其他类型的虚拟机
我运行了两个用nginx群集的tomcat实例。在我的tomcats上,我将Infinispan作为分布式缓存运行。当我在缓存中插入大约4mio的记录时,有些奇怪的事情发生了。在图1中你可以看出我的意思。JVM分配的内存比以往任何时候都要多,而且使用后不会释放。 JVM参数: xmx8g xx:newRatio=4 xx:survivorratio=8 xx:+UseCompressedoops
对于Java 8之后的JVM 当metaspace的大小
JDK8中引入的元空间仍然是JVM中运行时数据区域的一部分?除了自动增加大小外,它与Permgen空间有何不同。?
我在运行Java cs应用程序时遇到OutOfMemoryError错误。根据错误消息,错误似乎是在将XML字符串传输到Java对象时发生的。 传输代码如下所示 我查看了日志,找到了触发此错误的字符串。然后,我使用上面的代码将这个字符串转换为java对象,大约转换了10万次。未报告任何错误。 我有数千个这样的应用程序在windows xp系统中运行,我担心这会导致一个巨大的问题。我谷歌了这个错误,