JVM 调优实战--一个案例理解常用工具(命令)
测试代码
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;}
}
java -Xms200M -Xmx200M com.mashibing.jvm.gc.T15_FullGC_Problem01
top命令观察到问题:内存不断增长 CPU占用率居高不下
jps定位具体java进程
jinfo pid
jstat -gc 动态观察gc情况 / 阅读GC日志发现频繁GC / arthas观察 / jconsole jstat -gc 4655 500 : 每个500个毫秒打印GC的情况
jmap - histo 4655 | head -20,查找有多少对象产生
jmap -dump:format=b,file=xxx pid / jmap -histo
java -Xms20M -Xmx20M -XX:+UseParallelGC -XX:+HeapDumpOnOutOfMemoryError com.mashibing.jvm.gc.T15_FullGC_Problem01
使用MAT / jhat进行dump文件分析 https://www.cnblogs.com/baihuitestsoftware/articles/6406271.html
找到代码的问题
JVM 调优实战--一个案例理解常用工具(命令)相关推荐
- JVM 调优实战--可视化GC日志分析工具GC Easy使用教程
设置GC日志输出参数 将GC日志信息生成到文件中: 将会在F://test目录生成gc.log文件: GC Easy可视化工具 导致GC的原因:
- JVM从入门到精通(八):JVM调优实战
案例1:系统CPU经常100%,如何调优? 推理过程是:CPU100%,那么一定有线程在占用系统资源,所以 找出哪个进程cpu高(top命令) 该进程中的哪个线程cpu高(top -Hp) 如果是ja ...
- JVM调优实战:to-space exhausted Evacuation Failure
一次线上dubbo问题的定位,进行JVM调优实战. 问题 线上dubbo接口provider抛出异常: org.apache.dubbo.rpc.RpcException: Failfast invo ...
- 纯手写2022年最新JVM调优实战手册,看完让你精通JVM调优
很多程序员不重视 JVM 内存调优,写出来的代码经常出现 OOM 等内存问题.而且,面试求职者中,很多求职者一旦遇到JVM 或者 JVM 调优方面的问题,往往不知如何回答,才能充分展现自己的能力. j ...
- 七、JVM调优实战——基本命令使用
一.JVM类加载机制--自定义类加载器 二.JVM--对象内存分配机制 三.JVM内存模型 四.JVM垃圾收集算法和垃圾收集器 五.CMS垃圾回收器--三色标记算法 六.G1垃圾收集器 七.JVM调优 ...
- JVM从入门到精通(九):JVM调优实战 - arthas 的使用
Arthas 文档 https://github.com/alibaba/arthas/blob/master/README_CN.md 运行起来我们的java程序 启动 arthas 的 jar 文 ...
- 带你感受一次JVM调优实战
本文分成两部分,先了解理论,然后再进行实战. 理论篇 1.1 调优目标 JVM调优的两大目标是: 提高应用程序的性能和吞吐量: 通过优化JVM的垃圾回收机制.调整线程池大小和优化代码,可以提高应用程序 ...
- JVM 调优实战--JVM的运行参数及jinfo查看运行参数信息
为什么要进行JVM优化? 本篇博文基于jdk1.8来讲解. JVM的参数 标准参数比较稳定,基本上各个不同的jdk版本都会支持. -X参数是非标参数,各个版本不同,可能用着用着就没了. -XX参数也属 ...
- jvm 调优实战经验(结合jstat、jstack、procexp)
在本文中会从几个维度去分析,首先会介绍jstat工具命令的使用,然后会根据线程使用率分析jstack输出的日志. jstat部分的介绍出处:出处 http://blog.csdn.net/zlzlei ...
最新文章
- python 7-10梦想的度假胜地_7-8----7-10练习
- mysql的增_MySQL-----增
- luncene 查询字符串的解析—QueryParser类
- TIOBE 3月榜单:新功能将加入,C语言仍高居榜首
- java无效的源发行版_无效的Java
- MySQL Router 测试使用 转
- CondLaneNet | 使用动态卷积核预测每个车道线实例
- 从零基础入门Tensorflow2.0 ----八、43. 自定义流程分布式
- java filter重定向_Java Filter(过滤器)——重定向
- Javascript浏览器事件(上)
- 阿里Java开发手册(2021最新终极版) 编程必备
- 设计FMEA步骤五:风险分析
- 用Python计算北京地铁的两站间最短换乘路线
- 老板最“丧心病狂”的11个行为艺术
- 最新版FusionCharts2D面积图
- 端午假期你是如何过的?
- 2022年全球汽车头枕行业调研及趋势分析报告
- 谷歌正式开放「Bard」试用,很遗憾。。
- 《高效能人士的七个习惯》总结
- Cog2DSymbolTool工具 读码工具