JVM 何时抛出 OutOfMemoryError

2024-02-27

我们正在运行一个有时会“冻结”的 Java 应用程序,因为某些线程正在使用几乎所有堆。 尽管 JVM 执行的 Full GC 持续了 60 秒以上,但应用程序从未因 OutOfMemoryError 错误而终止。

我从 Java 文档中读到:

如果花费太多时间进行垃圾收集,吞吐量收集器将抛出内存不足异常。 例如,如果 JVM 花费超过 98% 的总时间进行垃圾回收,并且只回收不到 2% 的堆,则会抛出内存不足的预期。

我想更多地了解这 98% 的时间意味着什么(时间范围是多少?),以及是否可以降低这个值,即,如果应用程序将 90% 的时间花在 GC 上且无法释放,则抛出 OOME超过堆的 10%。

目标是确保应用程序将在 OOME 中终止(而不是仅执行 GC),以便我们可以在 OOME 上生成转储。

以下是我们使用的内存和 GC 设置(操作系统是 Solaris):

-Xms2048m -Xmx2048m \
-Xmn512m \
-XX:PermSize=256m 
-XX:MaxPermSize=256m \
-XX:+UseParNewGC 
-XX:ParallelGCThreads=16 \
-XX:+UseConcMarkSweepGC 
-XX:+CMSParallelRemarkEnabled \
-XX:+DisableExplicitGC \
-XX:+PrintGC 
-XX:+PrintGCDetails 
-XX:+PrintGCTimeStamps \
-XX:+PrintClassHistogram \
-Xloggc:/gcmonitor.log \
-XX:+HandlePromotionFailure \
-XX:SurvivorRatio=4 
-XX:TargetSurvivorRatio=90 
-XX:MaxTenuringThreshold=10 \
-XX:+UseTLAB 
-XX:TLABSize=32k 
-XX:+ResizeTLAB \
-XX:+UseMPSS \

我想了解更多关于这 98% 时间意味着什么的信息(时间范围是多少?)

回答这个问题:超出 GC 开销限制 https://stackoverflow.com/questions/4371505建议为 1 分钟。

可以降低这个值

再次研究上面提到的问题,看起来你可以使用GCTimeLimit and GCHeapFreeLimit参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JVM 何时抛出 OutOfMemoryError 的相关文章

  • 单元测试组合服务方法

    我正在为一个类编写 junit 单元测试 该类使用以下方法实现公开的接口 public Set
  • Java:线程“主”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:

    我是初学者 谁能帮我弄清楚我们在做什么 我正在尝试读取字符串并将字符串的每个字符存储在数组中 import java util Scanner public class CoreMainDigitExtractor static Scann
  • 在 Java 中从 SOAPMessage 获取原始 XML

    我已经在 J AX WS 中设置了 SOAP WebServiceProvider 但我无法弄清楚如何从 SOAPMessage 或任何 Node 对象获取原始 XML 下面是我现在获得的代码示例 以及我试图获取 XML 的位置 WebSe
  • 检查 IPv4 地址是否在私有范围内

    在 Python 中 使用 IPy 模块您可以执行以下操作 gt gt gt ip iptype PRIVATE 有没有一个库或简单的方法可以在 Java 中执行相同的操作 似乎不完全是但是InetAddress有一些 isXX 方法 例如
  • JTextField 和 JTextArea

    JTextField 和 JTextArea 有什么不同 是否可以在一个班级中使用这两个班级 总之 JTextField 是单行文本字段 而 JTextArea 可以跨越多行 文档中清楚地解释了这些差异 文本区 http docs orac
  • Kafka Java Consumer 已关闭

    我刚刚开始使用卡夫卡 我面临着消费者的一个小问题 我用Java写了一个消费者 我收到此异常 IllegalStateException 此消费者已关闭 我在以下行中遇到异常 ConsumerRecords
  • 在 Junit 测试中使用 ReflectionTestUtils.setField()

    我是 JUnittesting 的新手 所以我有一个问题 谁能告诉我为什么我们使用ReflectionTestUtils setField 在我们的 Junit 测试示例中 正如评论中提到的 java 文档很好地解释了用法 但我还想给你们举
  • 关于Java泛型的一些问题

    假设我有以下接口和实现类 interface Foo
  • 正则表达式在 Velocity 模板中不起作用

    我在 Test java 中尝试过这个 String regex lt s br s s gt String test1 lt br gt System out println test replaceAll regex 但是当我在速度模板
  • Java - JPanel 内有边距和 JTextArea

    我想创建这样的东西 主面板有其边距 x 并且 TextArea 位于该面板的中心 几乎填满了面板 底部是另一个具有自定义尺寸 高度 y 的面板 可以使用某些快捷方式将其切换为可见和不可见 底部面板有 FlowLayout 和几个元素 问题是
  • LocalDate 减去 period 得到错误的结果

    LocalDate减去一个Period 如 28年1个月27天 得到错误的结果 但减去一个Period 只有天单位 如 10282 天 得到正确的结果 有什么需要注意的吗 public static void main String arg
  • Java 中的 ExecuteUpdate sql 语句不起作用

    我正在学习如何将 SQL 与 Java 结合使用 我已成功安装 JDBC 驱动程序 并且能够从数据库读取记录并将其打印在屏幕上 我的问题发生在尝试执行更新或插入语句时 没有任何反应 这是我的代码 问题所在的方法 public static
  • 更改 JComboBox 中滚动条的大小

    有谁知道如何手动更改 jComboBox 中的滚动条大小 我已经尝试了一大堆东西 但没有任何效果 好吧 我明白了 您可以实现 PopUpMenuListener 并使用它 public void popupMenuWillBecomeVis
  • 如何使用 swagger-codegen-plugin (maven) 生成客户端代码?

    我需要使用 swagger codegen plugin for maven 在 eclipse 中生成服务器存根代码 你能帮忙怎么做吗 以及需要什么配置 在 pom xml 中 我找到了这个答案 您只需要像下面这样更改 pom xml 即
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • java swing:向 JTree 项目添加自定义图形按钮

    我想在 JTree 中的项目右侧添加一个带有小图标的附加按钮 这可以做到吗 如果是这样 怎么办 thanks Clamp 你在这方面成功了吗 我想做同样的事情 但很难让 JButton 响应用户 设置渲染器以显示按钮的过程很顺利 但所有鼠标
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • 从浏览器访问本地文件?

    您好 我想从浏览器访问系统的本地文件 由于涉及大量安全检查 是否可以通过某种方式实现这一目标 或使用 ActiveX 或 Java Applet 的任何其他工作环境 请帮帮我 要通过浏览器访问本地文件 您可以使用签名的 Java Apple
  • Java:一个函数有多种返回类型...可以使用泛型吗?

    为了简单起见 我有一些程序 如下所示 public String fetchValueAsString String key public DateTime fetchValueAsDateTime String key 我想要类似的东西
  • java.lang.ClassCastException:com.sun.proxy.$Proxy8 无法转换为 org.openqa.selenium.internal.WrapsDriver

    我有以下切入点和 AspectJ 中给出的建议 Pointcut call org openqa selenium WebElement sendKeys public void onWebElementAction After onWeb

随机推荐

  • psycopg2.errors.InFailedSqlTransaction:当前事务被中止,命令被忽略,直到事务块结束

    我编写了一个 scrapy 程序来从站点抓取数据 如果我抓取到 json 文件或 csv 文件 该程序会成功抓取 当我尝试抓取到 postgres 数据库时会出现问题 下图显示了我收到的错误 我该如何修复错误 def process ite
  • 如何对生成器对象或迭代器进行切片?

    我想循环遍历迭代器的 切片 我不确定这是否可能 因为我知道不可能对迭代器进行切片 我想做的是这样的 def f for i in range 100 yield i x f for i in x 95 print i 这当然失败了 Type
  • 如何删除 highcharts 系列中的所有点

    使用 HighCharts 我想删除系列中的所有点 以便我可以添加新的数据集 有没有比循环所有点并像这样将它们一一删除更好的方法 for var i 0 i lt chart series 0 points length i chart s
  • 在两个服务器之间同步缓存数据的最佳方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 想要同步两台服务器之间的缓存数据 两个数据库共享同一个数据库 但为了更好地执行数据 我在启动时将数据缓存到哈希映射中 因此希望在不重启
  • 使用 OpenCV 编写稳健的(颜色和大小不变)圆检测(基于霍夫变换或其他功能)

    我编写了以下非常简单的 python 代码来查找图像中的圆圈 import cv import numpy as np WAITKEY DELAY MS 10 STOP KEY q cv NamedWindow image press q
  • 使用入口点console_script进行Python包分发

    我准备部署一个具有以下布局的 Python 包 MyPackage setup py MyPackage init py main py lib init py utils py db init py db1 py db2 py tasks
  • 使用另一个表中的随机值更新 MySQL 表的最佳方法

    对于这个 伪代码 示例 我在 MySQL 中有两个表 member id name names name 会员人数100人 姓名10人 我想使用名称中的随机名称来更新成员表 到目前为止我已经得到了这个 但是不确定是否有更好的方法来实现它 U
  • 在 Swift 中的 WebService 中传递参数

    我正在学习 Swift 但不知道如何使用 Swift 向服务器发送参数 在 Objective C 中我们可以通过使用来做到这一点 作为占位符 但是对于 Swift 应该怎么做 假设我有一个需要电子邮件和密码的登录 Web 服务 现在我想知
  • 如何在android中根据材料设计制作Cardview?

    我看到了有关材料设计指南 但它有点混乱 当我设计我的卡片时 左侧有图像 图像右侧有一些文字 但我不满意它是否符合指南 请检查并告诉 我还希望我的虚拟文本段落合理 这是我的代码
  • 是否可以在 Google 地图或 Google 地球中显示 3D 数据?

    我正在尝试找到一种有效的方法来可视化一些现实世界传感器测量不同高度风速的反馈 有谁知道在谷歌地图中显示3D数据是否可行 我想象着指示方向和风速的 3D 箭头 如果可以加载模型并将其定位到特定的 GPS 位置 高度 然后更改其方向以指向特定的
  • 如何在 Python 中将字符串转换为转义序列? [复制]

    这个问题在这里已经有答案了 如果我有一个包含四个字符的字符串 例如 xf0 我如何将其转换为转义序列 xf0 我正在使用Python 3 4 编辑 我试图将字符串转换为字符串值代表的字符 您要做的就是解释原始字符串中的转义序列 以获取相应的
  • 清晰高效的 3D 范围树实现

    我正在做这个项目 我必须在 3d 空间中搜索对象 我认为效率是一个巨大的问题范围树非常适合我想要做的事情 间隔树也可以工作 但我不会从树中删除任何内容 一旦我在 3D 空间中添加每个对象 我只会使用该结构进行搜索 以下是我将如何使用该结构
  • 在不同的 Excel 文件中使用一个宏

    我写了一个宏 我想在不同的Excel文件中使用它 这些文件具有几乎相同的表结构但不同的数据 那么是否有可能将我的宏脚本 包含 到任何 Excel 文件中 我已经读过this tip https web archive org web 201
  • PHP 和 PDO:一个连接与多个连接

    在我的 PHP 程序中 我需要针对任何给定的网页请求访问数据库 0 到 3 次 我正在使用 PDO 与 MySQL 交互 首先 我使用如下内容创建一个数据库连接 dbh new PDO mysql host hostname dbname
  • 辅助功能、字段集图例和标题标签

    我正在开发的网站的一个要求是它必须符合 508 标准 目前我们大多数的 html 视图都以 header 开头h1然后该视图中需要的任何内容 现在对于表单 建议使用fieldsets and legend除其他众多准则外 在处理可访问性时也
  • 谷歌分析是否将裸域与 www 子域结合起来?

    我为自己的域安装了谷歌分析 http mydomain com 输入的用户是否会http www mydomain com也被分析脚本计算在内吗 对我来说 这似乎是合乎逻辑的 因为裸域地址与 www 前缀的站点位于同一站点是很常见的 但分析
  • 重置被拒绝的 HTML 通知

    我有一个网络应用程序 在其中使用 HTML 通知 如果用户第一次允许它并开始使用它 它工作正常 但是如果用户第一次通过单击阻止按钮阻止通知 然后尝试通过某些用户手势再次请求权限 则浏览器不会触发 允许 阻止 弹出窗口 这是我第二次触发许可
  • 按键时的 JTable 编辑

    我正在尝试以编程方式开始编辑当前行的第三列JTable在按键上 我已经实现了一个 KeyListener 其中keyReleased 包含这段代码 if e getKeyCode KeyEvent VK ENTER myTab change
  • 在 Powershell 中优雅地停止

    How do I catch and handle Ctrl C in a PowerShell script I understand that I can do this from a cmdlet in v2 by including
  • JVM 何时抛出 OutOfMemoryError

    我们正在运行一个有时会 冻结 的 Java 应用程序 因为某些线程正在使用几乎所有堆 尽管 JVM 执行的 Full GC 持续了 60 秒以上 但应用程序从未因 OutOfMemoryError 错误而终止 我从 Java 文档中读到 如