- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我们有一个相当大的应用程序在 JBoss 7 应用服务器上运行。过去,我们使用 ParallelGC,但它在一些堆很大(5 GB 或更多)并且通常几乎填满的服务器中给我们带来了麻烦,我们会经常遇到很长的 GC 暂停。
最近,我们改进了应用程序的内存使用,并在少数情况下为应用程序运行的一些服务器增加了更多 RAM,但我们也开始切换到 G1,希望减少这些暂停的频率和/或更短。事情似乎有所改善,但我们看到了以前没有发生过的奇怪行为(使用 ParallelGC):Perm Gen 似乎很快填满,一旦达到最大值就会触发 Full GC,这通常会导致长时间的暂停在应用程序线程中(在某些情况下,超过 1 分钟)。
几个月来,我们一直在使用 512 MB 的最大 perm 大小,在我们的分析期间,perm 大小通常会在 ParallelGC 的 390 MB 左右停止增长。然而,在我们切换到 G1 之后,上面的行为开始发生。我尝试将最大 perm 大小增加到 1 GB 甚至 1.5 GB,但仍然会发生 Full GC(只是频率较低)。
在 this link您可以看到我们正在使用的分析工具(YourKit Java Profiler)的一些屏幕截图。注意当 Full GC 被触发时,Eden 和 Old Gen 有很多可用空间,但 Perm 大小是最大的。在 Full GC 之后 Perm 大小和加载类的数量急剧减少,但它们又开始上升并重复循环。代码缓存很好,永远不会超过 38 MB(在这种情况下是 35 MB)。
这是GC日志的一部分:
2013-11-28T11:15:57.774-0300: 64445.415: [Full GC 2126M->670M(5120M), 23.6325510 secs] [Eden: 4096.0K(234.0M)->0.0B(256.0M) Survivors: 22.0M->0.0B Heap: 2126.1M(5120.0M)->670.6M(5120.0M)] [Times: user=10.16 sys=0.59, real=23.64 secs]
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
-Xms5g -Xmx5g -Xss256k -XX:PermSize=1500M -XX:MaxPermSize=1500M -XX:+UseG1GC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintAdaptiveSizePolicy -Xloggc:gc.log
最佳答案
Perm Gen 增长的原因
-XX:+UseConcMarkSweepGC
,尝试通过添加
-XX:+CMSClassUnloadingEnabled
来启用类卸载和永久生成集合。 .
-Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
standalone.xml
中。 .您将获得每个 JVM 选项及其设置的列表。注意:它必须在您要查看的 JVM 中才能使用它。如果您在外部运行它,您将看不到运行 JBoss 的 JVM 中发生了什么。
set "JAVA_OPTS= -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal %JAVA_OPTS%"
-XX:+PrintcommandLineFlags
jmap -permstat JBOSS_PID >& permstat.out
-XX:SurvivorRatio=8
– 将幸存者空间比例设置为 1:8,从而产生更大的幸存者空间(比例越小,空间越大)。 SurvivorRatio 是伊甸园空间与一个幸存者空间相比的大小。更大的幸存者空间允许短命对象在年轻代中死亡更长的时间。 -XX:TargetSurvivorRatio=90
– 允许 90% 的幸存者空间被占用,而不是默认的 50%,从而更好地利用幸存者空间内存。 -XX:MaxTenuringThreshold=31
– 防止从年轻代过早提升到年老代。允许生命周期较短的对象在年轻代中死亡更长的时间(因此避免升级)。此设置的结果是,由于要复制的额外对象,次要 GC 时间可能会增加。可能需要调整此值和幸存者空间大小,以平衡幸存者空间之间复制的开销与将长期存在的长期对象。 CMS 的默认设置是 SurvivorRatio=1024 和 MaxTenuringThreshold=0,这会导致所有清理的幸存者都被提升。这会给收集年老代的单个并发线程带来很大压力。注意:与 -XX:+UseBiasedLocking 一起使用时,此设置应为 15。-XX:NewSize=768m
– 允许指定初始年轻代大小 -XX:MaxNewSize=768m
– 允许指定最大年轻代大小 关于java - G1 垃圾收集器 : Perm Gen fills up indefinitely until a Full GC is performed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20274317/
我需要为客户端调整 bittrex api: LIMIT_BUY 或 LIMIT_SELL(和 CANCEL)订单到目前为止有效。 但是他遇到了部分填充的问题。 api 文档。在他们的网站上没有提到这
所以我发现 color 数据类型实际上是一个 int,阅读了一些有关位移位的内容,目的是让自己成为一个类来处理这个问题。 这是基本代码(没有 getters/setters,所有内容都是 public
这个问题在这里已经有了答案: Unexpected behavior using Array Map on an Array Initialized with Array Fill [duplica
当我在 zoom to fill screen 和 stretch to fill screen 之间切换时,我的应用程序会崩溃。顺便说一下,我注意到市场上很多应用程序都有这个问题。有谁知道如何避免这
Sample Text Here Sign Up 我有上面的 HTML 部分,我正在尝试
在html中我可以设置背景图片的下面属性吗?(图片在iOS中我可以像下面这样设置图片的填充属性,但我不知道html中是否有类似的属性): Scale to Fill, Aspect Fit, Aspe
我对 HTML 上一个填充和另一个填充之间的现有空间感到困扰。每个填充物都适合倾斜的一侧。我希望完全填满这条线,但还有空间。 这是示例代码: var canvas = document.createE
考虑 pygame 循环中的这一行: pygame.display.set_mode().fill((0, 200, 255)) 发件人:http://openbookproject.net/thin
我在一个系统上观察到 std::fill在大 std::vector设置常量值 0 时明显且始终较慢与常数值 1 相比或动态值: 5.8 GiB/s 对比 7.5 GiB/s 但是,对于较小的数据大小
我正在做一个元素。在那个元素中,我需要一个 div 的渐变背景。我只需要一种颜色来填充 40px。另一种颜色填充计算(100%-40px)。我从来没有这么深入地玩过渐变。我的 40px 颜色是 rgb
我正在使用的 API 的用户注册代码一直存在问题。 我有一个 UserController,它获取发布的数据并验证字段。然后它将数据发送到我的 UserService 类中的 SignUpUser 方
Facebook AudienceNetwork 加载失败:无填充,错误消息“无填充”,FaceBook android Advertise 的原因是什么? Facebook 广告经常显示加载频率,频
我在 UITableViewCell 中使用了 UIImageView,它将填充 contentView。我尝试了不同的模式,如“缩放以填充”、“Aspect Fit”、“” Aspect Fill”
这个问题已经有答案了: Array.fill(Array) creates copies by references not by value [duplicate] (3 个回答) 已关闭 4 年前
问题 我将我的一些图像放在 /assets/images 文件夹中。然后在 layouts/_default/single.html 中,我为不同的屏幕尺寸创建了一个主图部分,如下面的代码所示。问题是
我知道有 CGContextClearRect ,尽管它可以让你清除 drawRect 类中的所有内容。我如何选择一个 CGContextRef 并清除它?对于我的情况,我的代码如下: //Put c
我有一个包含 3 列的 Tlistview,我需要来自 Tcollection 对象,如下所示 FListeDispoProduit := TListeDispoProduit.Create(TPro
有没有办法抑制babel提供的polyfill?例如,转译以下内容: const obj = { a: 1 }; const obj2 = { ...obj }; 将输出 var _extends =
如何使用 Excel 中的 VBA(所有单元格)将所有工作表填充颜色设置为无填充。与选择所有工作表相同,选择所有单元格 (Control+A) 并将填充颜色更改为无填充。 最佳答案 未经测试,但应该可
我想知道如何在数组上应用洪水填充,我的数组是二维的,其中包含 times new roman 字体类型的字母边界。边界线包含 1,内外全为 0。我只想在内部填充所有 1 而不是 0。但我需要一个不需要
我是一名优秀的程序员,十分优秀!