Jvm实际运行情况-JVM(十七)

2023-11-16

上篇文章说jmap和jstat的命令,如何查看youngGc和FullGc耗时和次数。

Jmap-JVM(十六)

  • Jvm实际运行情况

背景:

机器配置:2核4G

JVM内存大小:2G

系统运行天数:7天

期间发生FULL GC次数和耗时:500多次,200多秒

期间发生Yoing GC次数和耗时:1万多次,500多秒

算下来fullGC平均耗时,0.4s(每次400ms左右)

每天发生1万多次,则每分钟发生1次,每次YoungGC耗费50ms

JVM参数配置:

-Xms1536M -Xmx1536M -Xmn512M -Xss256K -XX:SurvivorRatio=6

-XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M

-XX:+UseParNewGC -XX:+UseConcMarkSweepGC

-XX:CMSInitiatingOccupancyFraction=75 -XX:UseCMSInitiatingOccupancyOnly

通过以上参数我们可以分析出:

  1. 堆内存是1个G+512M
  2. 年轻代是512M,老年代是1G
  3. 因为比例是6:1:1,年轻代eden则是384M,S0和S1分别是64M
  4. 线程栈256K,元空间256M

前面我们说过,

  1. 大对象会进入老年代。
  2. 对象年龄太大会进入老年代。
  3. 对象动态年龄判断,当进入对象大小大于这块survivor区域的百分之50,会把大于年龄1的对象都放入老年代。
  4. 老年代分配担保机制:每次minor gc之前都会jvm计算老年代剩余可用空间,如果这个可用空间小于年轻代里现在所有对象大小之和(包括垃圾对象),就会看参数

-XX:HandlerPromotionFailure是否设置。如果没有设置,则直接fullGC,如果fullGC完还不能,则会发生OOM。

如何设置了,则会看老年代可用空间大小是否小于每次minor gc对象平均大小。大于的话才会minor gc。

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

Jvm实际运行情况-JVM(十七) 的相关文章

  • G1 GC 单个、非常长的年轻 GC 发生且 ParallelGCThreads=1

    I set ParallelGCThreads 1并使用G1 GC 所有其他JVM设置为默认设置 我跑PageRank在 Spark 1 5 1 上 有两个 EC2 节点 每个节点有 100 GB 堆 我的堆使用情况图如下 红色区域 年轻代
  • 如何使用IntelliJ IDEA ThreadDumpVisualizer插件分析Java线程转储

    我正在寻找使用一些线程转储分析器来分析 Java 线程转储并安装了ThreadDumpVisualizerIntelliJ IDEA 插件 但不知道如何使用它 插件页面 https plugins jetbrains com plugin
  • 内存中的方法表示是什么?

    在思考一下 Java C 编程时 我想知道属于对象的方法如何在内存中表示 以及这一事实如何涉及多线程 是为内存中的每个对象单独实例化一个方法还是执行 同一类型的所有对象共享该方法的一个实例 如果是后者 执行线程如何知道哪个对象是 要使用的属
  • Cassandra DB 中的日期插入:重要的 1 小时轮班问题(后续)

    这是这个的后续其他原帖 https stackoverflow com questions 23080188 date insertion in cassandra db non trivial 1h shift issue 2308355
  • 从 Intellij 在远程主机上部署/运行 jvm 应用程序

    是否可以在 intellij 的远程服务器上部署 运行 出于测试目的 独立的 Java 应用程序 我并不是要连接到已经运行的 JVM 而是要从 intellij 在远程主机上启动一个新的 JVM 就像它在我的本地计算机上运行一样 目前没有内
  • 显示JVM中当前运行的所有线程组和线程

    所以我的任务是显示所有线程组以及当前在 JVM 中运行的属于这些组的所有线程 输出时应首先显示线程组 然后在下面显示该组中的所有线程 这是针对所有线程组完成的 目前 我的代码将仅显示每个线程组 然后显示每个线程 但我不确定如何达到我所描述的
  • Java 堆被无法访问的对象淹没

    我们的 Java EE 应用程序开始出现一些严重问题 具体来说 应用程序在启动后几分钟内就运行了高达 99 的老年代堆 不会抛出 OOM 但实际上 JVM 没有响应 jstat 显示老年代的大小根本没有减少 没有垃圾收集正在进行 并且kil
  • 使用 + 符号连接字符串

    今天我在读书Antonio 关于 toString 性能的博客 https antoniogoncalves org 2015 06 30 who cares about tostring performance 还有一段话 昨天曾经被认为
  • 热点 JVM 字节码解释器是跟踪 JIT 吗?

    这个问题几乎说明了一切 我一直在寻找答案 甚至通过 VM 规范 但我没有明确说明 No 不过 还有一些其他 JVM 具有跟踪 JIT HotPath http HotPath GoogleCode Com and Maxine http L
  • 为什么 JVM 同时具有“invokespecial”和“invokestatic”操作码?

    两条指令都使用静态而不是动态调度 似乎唯一的实质性区别是invokespecial始终将一个对象作为其第一个参数 该对象是分派方法所属类的实例 然而 invokespecial实际上并没有把物体放在那里 编译器负责通过在发出之前发出适当的堆
  • STS 无法在我的计算机上启动

    我试图在 eclipse 上设置 Spring mvc 项目 基本项目进展顺利 但是使用 Restful 服务 Jersey 等开始出现许多与依赖项相关的错误 所以我打算转到STS 我正在使用 STS 2 9 2 它给我 无法创建java虚
  • 如何减少Scala中创建的对象数量?

    我正在 Scala 中编写一个计算机图形应用程序 它使用 RGB 类返回图像中某个点的颜色 正如你可以想象的 返回颜色 RGB 对象的函数被调用了很多次 class RGB val red Int val green Int val blu
  • 什么触发了java垃圾收集器

    我对 Java 中垃圾收集的工作原理有点困惑 我知道当不再有对某个对象的实时引用时 该对象就有资格进行垃圾回收 但是如果它有对实时对象的引用怎么办 可以说我有一个节点集合 它们再次引用更多节点 List 1 gt Node a gt Nod
  • 在intellij中为java启用ssl调试

    从我的问题开始 上一期尝试通过 tls ssl 发送 java 邮件 https stackoverflow com questions 39259578 javamail gmail issue ready to start tls th
  • 如何判断我是在 64 位 JVM 还是 32 位 JVM 中运行(在程序内)?

    如何判断应用程序运行的 JVM 是 32 位还是 64 位 具体来说 我可以使用哪些函数或属性来在程序中检测到这一点 对于某些版本的 Java 您可以使用标志从命令行检查 JVM 的位数 d32 and d64 java help d32
  • 为什么 MetaSpace 大小是已用 MetaSpace 的两倍?

    我写了一个程序来模拟MetaSpace OOM 但我发现MetaSpace Size几乎总是两倍大Used MetaSpace Why 我用标志运行我的程序 XX MaxMetaspaceSize 50m 程序抛出OOM时Used Meta
  • 可以混合使用 JVM 语言吗?即:Groovy 和 Clojure

    我知道你可以轻松地混合groovy java clojure java 无论什么JvmLang java 这是否也意味着我也可以让 clojure 和 groovy 代码进行交互 如果我使用 Grails 或 jRoR 我也可以在该环境中使
  • 监控 Java 应用程序上的锁争用

    我正在尝试创建一个小基准 在 Groovy 中 以显示几个同步方法上的高线程争用 当监控自愿上下文切换时 应该会出现高争用 在 Linux 中 这可以通过 pidstat 来实现 程序如下 class Res private int n s
  • 如何在Java中计算对象的数字年龄[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道Java中对象的年龄 当我们使用new关键字时 Java中用户定义的对象被创建 但是什么时候它会被销毁 是跨越JVM的perm
  • 测量 tomcat 的排队请求数

    因此 使用tomcat 您可以设置acceptCount值 默认为100 这意味着当所有工作线程都忙时 新连接被放置在队列中 直到队列满 之后它们被拒绝 我想要的是监视此队列中项目的大小 但无法确定是否有办法通过 JMX 获取此值 即不是队

随机推荐

  • 弱口令漏洞与验证码绕过——渗透day04

    目录 一 基于远程服务的弱口令攻击 一 服务暴力破解软件 二 实验 二 基于web的弱口令测试 一 基于表单的暴力破解 二 验证码绕过 on client 1 通过Script Blocker Ultimate插件绕过验证码 2 通过bur
  • Qt封装一个类管理moveToThread( )正确的开启多线程、安全的退出线程的实例

    看本篇的文章基础在于你已经懂得了简单的利用moveToThread的方法创建出一个线程 不会的话可以查看本篇博客 总结 QT 多线程 处理密集时的界面响应保持 运用 MultMoveToThread testObject new MultM
  • 记一次mysql进程无法启动的解决方案

    莫名其妙数据库崩了 试了很多方案启动不了 然后不经意看到 usr local mysql data目录下几个日志文件特别大 删除之后就能重启了 rw rw 1 mysql mysql 4497955 Mar 3 18 29 xxxx php
  • 【Unity Optimize】使用图集(Sprite Atlas)优化项目

    目录 1 图集 Sprite Atlas 介绍 2 创建与配置Sprite Atlas 2 1 创建Sprite Atlas 2 1 1 Unity2D项目 2 1 2 Unity3D项目 2 2 配置Sprite Atlas 2 3 注意
  • PLC接线详解

    PLC常见的输入设备有按钮 行程开关 接近开关 转换开关 拨码器 各种传感器等 输出设备有继电器 接触器 电磁阀等 想学好电气 必须先学会接线 如果线都接不好的话 设备出现问题时 依然是无从下手 正确地连接输入和输出线路 是保证PLC可靠工
  • 射频电路学习之LC振荡电路

    文章目录 前言 一 串联谐振电路 二 并联谐振电路 三 谐振电路的本质 总结 前言 谐振是指 当外力作用的频率与系统固有的振荡频率相同或非常接近时 振幅急剧增大的现象 其中产生谐振时的频率成为谐振频率 谐振是正弦电路中的一种特殊现象 回路也
  • IBM DISK queue_depth参数调整

    queue depth参数会影响disk i o性能 特别是在数据库等i o密集性应用中 适当调整设置此参数 会提高整体应用的性能 下面是在AIX 5 3 IBM ds4300上调整此参数的 步骤及注意事项 记录一下 下面物理磁盘hdisk
  • Windows 11 提升软件打开速度

    设置 gt 辅助功能 gt 视觉效果 gt 动画效果 关闭 设置 gt 辅助功能 gt 视觉效果 gt 透明效果 关闭 设置 gt 应用 gt 启动 都关闭
  • 08-wait 和 sleep 的区别

    1 源码 sleep public class Thread implements Runnable public static native void sleep long var0 throws InterruptedException
  • Qt实现图像自适应窗口大小之scaled()函数使用

    很多应用都需要显示图片 比如视频类应用 拍照类应用 但是在大数情况下用户都会改变窗口大小 以获得最佳效果 在Qt中如果只设置了显示图片而没有对自适应窗口做出设置 用户拖拽边框的时候 整个控件上就会出现大片空白部分 怎么解决这个问题呢 QIm
  • Python基础(四):Python函数和模块的讲解和应用

    一 前言 山东省小学已将Python内容纳入教材 江省已将信息技术教材VB编程语言替换为Python 计算机二级考试加入 Python语言程序设计 科目 越来越多的岗位也需要Python技能 Python连续4年成功登顶最流行的编程语言榜单
  • Git安装以及基本配置

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 提示 以下是本篇文章正文内容 下面案例可供参考 一 Git安装以及配置 git官网 https git scm com downloads 选择适合的版本进入下载 然后傻瓜式
  • 两个数组去重!

    var a1 1 2 3 4 5 var b1 1 2 var c1 a1 filter a gt return b1 some c gt c a 两个数组可快速对比去重
  • crontab日志包命令找不到和乱码问题

    crontab设置的定时任务 执行脚本报错命令找不到和乱码 使用crontab时的运行环境已经不是用户环境了 因此原本用户下的一些环境变量的设 置就失效了 因为我的命令path设置到了 etc profile里了 所以在crontab运行不
  • 【Flutter 1-8】Flutter教程Dart语言——控制语句

    控制语句 Dart语言的控制语句跟其他常见语言的控制语句是一样的 基本如下 if 和 else for 循环 while 和 do while 循环 break 和 continue switch 和 case assert If 和 El
  • centos 6.6 编译安装PHP7.0.5

    PHP7 0正式版也出来了 今天编译安装了一下 写下安装步骤 我是在centos6 6 环境中编译的 如下 下载地址http cn2 php net distributions php 7 0 5 tar gz 安装编译所需的包 如遇见部分
  • ListView 的position不正确的时如何处理

    当给ListView加了一个HeaderView后 代码如下 我们发现 onItemClick方法里的position参数的值不是我们所期望的 比如点击ListView的第一行 我们期望的position是0 可是实际上却是1 也就是说 它
  • OAuth2实现单点登录SSO完整教程,其实不难!

    点击上方 Java基基 选择 设为星标 做积极的人 而不是积极废人 源码精品专栏 原创 Java 2020 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 Rock
  • vovnet 测试

    vovnet39 1070 640 640 batch 1 15ms 自己改了参数 import time import torch import torch nn as nn import torch nn functional as F
  • Jvm实际运行情况-JVM(十七)

    上篇文章说jmap和jstat的命令 如何查看youngGc和FullGc耗时和次数 Jmap JVM 十六 Jvm实际运行情况 背景 机器配置 2核4G JVM内存大小 2G 系统运行天数 7天 期间发生FULL GC次数和耗时 500多