五、Jvm调优

2023-10-26

Jvm调优调什么

这个疑问必须要有,当对一个技术或者系统调优的时候 ,我们一定要知道去调什么,这样有一个出发点,有一个目标。不能胡乱的调对吧。

那么Jvm调优,主要调以下

1)减少Full GC

2)解决OOM

3)

总的来说就是:使用较小的内存占用来获得较高的吞吐量或较低的延迟

windows 系统下 我们可以通过 jps 命令查看程序进程ID

linux 系统我们通过 ps -ef | grep java 来找到要调整的程序的进程ID (jps在linux下一样可以用,不过部署的服务很多,不知道那个是我们要调的程序进程ID)

有了进程ID我们就可以对他做各种事情了

命令行

jmap

// 查看当前系统的实例
jmap -histo 进程ID

// 查看当前存活的实例 执行时可能会出发FGC
jmap -histo:live 进程ID

// 导出系统实例
jmap -histo 进程ID >log.txt

打开导出的文件

num:序号

instances:实例数量

bytes:占用空间大小

class name:类名称(C=char[],S=short[],I=int[],B=byte[])

通过这些信息我们能看出程序在运行中,导出的那个瞬间,那个实例数最多,如果有我们自己写的,那就得好好分析分析了。

通过命令 【 jmap -heap 进程ID】 查看堆信息

通过 【jmap -dump:format=b,file=test2021.hprof 进程ID】 导出堆内存 dump,如果内存很大会导不出来,或者时间很长。

通过参数 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./  设置在内存溢出自动导出dump文件。

jstack

1)查找CPU较高的线程堆栈信息(Linux系统)

通过 top 命令查看正在运行的所有进程情况,实时的一个状态

找出%CPU最高的那个进程ID,也就是PID,通过命令【top -p 进程ID】锁定它,大写状态下的 H 字母

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

五、Jvm调优 的相关文章

  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • Java Integer CompareTo() - 为什么使用比较与减法?

    我发现java lang Integer实施compareTo方法如下 public int compareTo Integer anotherInteger int thisVal this value int anotherVal an
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 计算机英语(编程词汇大全)

    计算机英语 编程词汇大全 来源地址 https blog csdn net D hj05 article details 80274471 application pl ke n 应用程式 应用 应用程序 application frame
  • OLED透明屏技术:引领品牌营销的视觉革命

    在当今竞争激烈的市场中 品牌营销的成功与否关系到企业的生存和发展 而随着科技的不断进步 新的广告展示技术不断涌现 其中OLED透明屏技术以其独特的视觉效果和创新性的应用在品牌营销领域引起了广泛关注 那么 尼伽将详细介绍OLED透明屏技术以及
  • ROS学习第三天 ROS的通讯机制

    感谢3 1 常用API Autolabor ROS机器人入门课程 ROS理论与实践 零基础教程 第三节 ROS的通讯机制 这一节主要讲的是通讯机制 就像前面说的那样 ROS通过节点发布信息 节点订阅信息实现通讯 基本的通讯机制主要有三种 话
  • vue-router中的#

    vue工程搭建完成后 我们运行在浏览器中打开 会发现url中多了一个 符号 有 是使用URL hash模式的缘故 代表网页中的一个位置 右边的字符就是该位置的标识符 从 开始的部分就是URL的锚部分 vue router默认的是hash模式
  • 具备“记忆”功能的VBA目录选择器

    大家使用任意一款浏览器 例如 Chrome Edge 下载文件时 如果 另存为 对话框选择C Download 那么下次再次使用 另存为 功能 对话框默认显示C Download 而不是根目录 在VBA开发中调用目录选择器并不复杂 但是这个
  • JDBCUtils工具类及其使用

    JDBCUtils工具类及其使用 1 作用 用于连接数据库 关闭资源 减少每次的关闭连接 避免代码冗余 2 JDBCUtils的创建 定义相关属性 4个 因为只需要一份所以用static关键字 定义相关属性 4个 因为只需要一份所以用sta
  • useMemo模拟useCallback

    useMemo缓存结果 useCallback缓存函数 1 看一下useMemo和useCallback底层源码的区别 useMemo 源码实现 组件首次渲染时 useMemo 的源码实现 React 版本 16 13 1 react re
  • spring cloud使用JpaRepository,dao层无法注入容器,调试报空指针的解决思路

    公司岗位调整 我从一个安卓开发转后台开发 以前在其他公司也接触过后台 那时公司用的是ssm框架 不过安卓还是 主业务 后台业务也只是略而兼之 并未深研 想着公司这次给机会做后台 本着技多不压身 就欣然接受 此时已经2019年了 微服务方兴未
  • 算法笔记之GD,BGD,SGD

    在讨论GBDT前 先来看看什么是GD BGD和SGD GD Gradient Descent 梯度下降 求损失函数最小值 梯度下降 求损失函数最大值 梯度上升 假设线性模型 其中 是参数 损失函数为 那么每次GD的更新算法为 BGD Bat
  • UE4如何动态修改材质(材质参数集)

    UE4如何动态修改材质 材质参数集 UE4如何动态修改材质 一 Material Parameter collection是什么 二 使用步骤 1 创建材质参数集 2 创建参数 3 添加到材质 4 动态修改材质参数集 UE4如何动态修改材质
  • linux系统编程

    fcntl 改变文件属性 include
  • Rust 交叉编译:在Windows 10 64位系统编译 32位的Rust 库

    1 添加 x86编译链接器 rustup target add i686 pc windows msvc 如果没有相应的 x86 编译环境 执行x86的编译命令 会有截图找不到crate的错误 2 编译x86版本库 继续沿用 C 调用 Ru
  • 千锋老师回忆起Hadoop大数据时代

    在大数据领域 Hadoop是一个具有重要意义的技术框架 它为处理大规模数据集提供了可靠且高效的解决方案 本文将回顾千锋老师对于Hadoop大数据时代的追忆 并通过相关的源代码展示其强大的功能 Hadoop最著名的组件之一是Hadoop分布式
  • 五年的努力!年薪达40W,Java程序员奋斗史

    金九银十 面试季刚开始不久 前几天跟朋友在一起聚会的时候提了一个问题 说Java程序员年薪如何达到40W 技术水平需要达到什么程度 有人回答说这只能是大企业或者互联网企业工程师才能拿到 也许是的 小公司或者非互联网企业拿到40W的不太可能是
  • QT 串口的监控

    QSocketNotifier 用来监听系统文件操作 将操作转换为Qt事件进入系统的消息循环队列 并调用预先设置的事件接受函数 处理事件 一共存在3类事件 read write exception QSocketNotifier Read
  • Kafka日志清除

    25条消息 Kafka日志清除策略 鸭梨山大哎的博客 CSDN博客 kafka 日志删除策略 修改server properties The minimum age of a log file to be eligible for dele
  • Faceswap安装及使用(附图文介绍,简单易上手)

    Faceswap是github上面的一个项目 可以用于实现换脸 本章分为两节 分别介绍了faceswap具体的安装步骤以及使用方法 操作简单易上手 阅读完本文觉得有用的记得点个赞奥 谢谢大家 一 faceswap安装 1 打开faceswa
  • docker “no space left on device” 解决方案

    问题原因 出现此问题一般是 docker 根目录空间不足导致 解决方案 修改 Docker Root Dir 的值 指向一个更大空间的目录 1 查看docker磁盘使用情况 docker system df 2 查看docker挂载目录 d
  • 在ubantu下安装sublime

    1添加Sublime text 3软件包的软件源sudo add apt repository ppa webupd8team sublime text 32使用以下命令更新系统软件源sudo apt get update3使用以下命令安装
  • 五、Jvm调优

    Jvm调优调什么 这个疑问必须要有 当对一个技术或者系统调优的时候 我们一定要知道去调什么 这样有一个出发点 有一个目标 不能胡乱的调对吧 那么Jvm调优 主要调以下 1 减少Full GC 2 解决OOM 3 总的来说就是 使用较小的内存