测试代码

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;/*** 从数据库中读取信用数据,套用模型,并把结果进行记录和传输*/public class T15_FullGC_Problem01 {private static class CardInfo {BigDecimal price = new BigDecimal(0.0);String name = "张三";int age = 5;Date birthdate = new Date();public void m() {}}private static ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(50,new ThreadPoolExecutor.DiscardOldestPolicy());public static void main(String[] args) throws Exception {executor.setMaximumPoolSize(50);for (;;){modelFit();Thread.sleep(100);}}private static void modelFit(){List<CardInfo> taskList = getAllCardInfo();taskList.forEach(info -> {// do somethingexecutor.scheduleWithFixedDelay(() -> {//do sth with infoinfo.m();}, 2, 3, TimeUnit.SECONDS);});}private static List<CardInfo> getAllCardInfo(){List<CardInfo> taskList = new ArrayList<>();for (int i = 0; i < 100; i++) {CardInfo ci = new CardInfo();taskList.add(ci);}return taskList;}
}
  1. java -Xms200M -Xmx200M com.mashibing.jvm.gc.T15_FullGC_Problem01

  2. top命令观察到问题:内存不断增长 CPU占用率居高不下

  3. jps定位具体java进程

  4. jinfo pid

  5. jstat -gc 动态观察gc情况 / 阅读GC日志发现频繁GC / arthas观察 / jconsole jstat -gc 4655 500 : 每个500个毫秒打印GC的情况

  6. jmap - histo 4655 | head -20,查找有多少对象产生

  7. jmap -dump:format=b,file=xxx pid / jmap -histo

  8. java -Xms20M -Xmx20M -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError com.mashibing.jvm.gc.T15_FullGC_Problem01

  9. 使用MAT / jhat进行dump文件分析 https://www.cnblogs.com/baihuitestsoftware/articles/6406271.html

  10. 找到代码的问题

JVM 调优实战--一个案例理解常用工具(命令)相关推荐

  1. JVM 调优实战--可视化GC日志分析工具GC Easy使用教程

    设置GC日志输出参数 将GC日志信息生成到文件中: 将会在F://test目录生成gc.log文件: GC Easy可视化工具 导致GC的原因:

  2. JVM从入门到精通(八):JVM调优实战

    案例1:系统CPU经常100%,如何调优? 推理过程是:CPU100%,那么一定有线程在占用系统资源,所以 找出哪个进程cpu高(top命令) 该进程中的哪个线程cpu高(top -Hp) 如果是ja ...

  3. JVM调优实战:to-space exhausted Evacuation Failure

    一次线上dubbo问题的定位,进行JVM调优实战. 问题 线上dubbo接口provider抛出异常: org.apache.dubbo.rpc.RpcException: Failfast invo ...

  4. 纯手写2022年最新JVM调优实战手册,看完让你精通JVM调优

    很多程序员不重视 JVM 内存调优,写出来的代码经常出现 OOM 等内存问题.而且,面试求职者中,很多求职者一旦遇到JVM 或者 JVM 调优方面的问题,往往不知如何回答,才能充分展现自己的能力. j ...

  5. 七、JVM调优实战——基本命令使用

    一.JVM类加载机制--自定义类加载器 二.JVM--对象内存分配机制 三.JVM内存模型 四.JVM垃圾收集算法和垃圾收集器 五.CMS垃圾回收器--三色标记算法 六.G1垃圾收集器 七.JVM调优 ...

  6. JVM从入门到精通(九):JVM调优实战 - arthas 的使用

    Arthas 文档 https://github.com/alibaba/arthas/blob/master/README_CN.md 运行起来我们的java程序 启动 arthas 的 jar 文 ...

  7. 带你感受一次JVM调优实战

    本文分成两部分,先了解理论,然后再进行实战. 理论篇 1.1 调优目标 JVM调优的两大目标是: 提高应用程序的性能和吞吐量: 通过优化JVM的垃圾回收机制.调整线程池大小和优化代码,可以提高应用程序 ...

  8. JVM 调优实战--JVM的运行参数及jinfo查看运行参数信息

    为什么要进行JVM优化? 本篇博文基于jdk1.8来讲解. JVM的参数 标准参数比较稳定,基本上各个不同的jdk版本都会支持. -X参数是非标参数,各个版本不同,可能用着用着就没了. -XX参数也属 ...

  9. jvm 调优实战经验(结合jstat、jstack、procexp)

    在本文中会从几个维度去分析,首先会介绍jstat工具命令的使用,然后会根据线程使用率分析jstack输出的日志. jstat部分的介绍出处:出处 http://blog.csdn.net/zlzlei ...

最新文章

  1. python 7-10梦想的度假胜地_7-8----7-10练习
  2. mysql的增_MySQL-----增
  3. luncene 查询字符串的解析—QueryParser类
  4. TIOBE 3月榜单:新功能将加入,C语言仍高居榜首
  5. java无效的源发行版_无效的Java
  6. MySQL Router 测试使用 转
  7. CondLaneNet | 使用动态卷积核预测每个车道线实例
  8. 从零基础入门Tensorflow2.0 ----八、43. 自定义流程分布式
  9. java filter重定向_Java Filter(过滤器)——重定向
  10. Javascript浏览器事件(上)
  11. 阿里Java开发手册(2021最新终极版) 编程必备
  12. 设计FMEA步骤五:风险分析
  13. 用Python计算北京地铁的两站间最短换乘路线
  14. 老板最“丧心病狂”的11个行为艺术
  15. 最新版FusionCharts2D面积图
  16. 端午假期你是如何过的?
  17. 2022年全球汽车头枕行业调研及趋势分析报告
  18. 谷歌正式开放「Bard」试用,很遗憾。。
  19. 《高效能人士的七个习惯》总结
  20. Cog2DSymbolTool工具 读码工具

热门文章

  1. 【Python基础】Python高级特性:切片、迭代、列表生成式、生成器与迭代器
  2. 【经验分享】计算机专业如何自己增加项目经验?
  3. 【Kick Algorithm】十大排序算法及其Python实现
  4. AI 基础:Python 简易入门
  5. 负样本修正:既然数据是模型的上限,就不要破坏这个上限
  6. 技术干货 | 为高音质保驾护航 - 通信中的回声消除
  7. 基于Elasticsearch的数据报表方案
  8. 【入门】WebRTC知识点概览 | 内有技术干货免费下载
  9. 数据结构_队列_mindmap
  10. 网络工程师成长日记421-某银行技术支持