- 博客(9)
- 收藏
- 关注
原创 深度探索JFR - JFR详细介绍与生产问题定位落地 - 3. 各种Event详细说明与JVM调优策略(2)
2. JAVA 应用相关2.4. Java Monitor 同步锁相关主要是三种 Event:当进入同步块,尝试获取锁的时候,产生 JavaMonitorEnter Event;当调用 Object.wait() 进入等待时,会产生 JavaMonitorWait Event;当 锁升级(另一种说法是锁膨胀)时,产生 JavaMonitorWait Event。下面我从网上看到的这张图,有...
2020-04-07 19:48:05 58728
原创 深度探索JFR - JFR详细介绍与生产问题定位落地 - 3. 各种Event详细说明与JVM调优策略(1)
Event 采集详细配置目前,JDK 11 一共有136个 Event 采集配置。这里会比较详细的去看每一个Event,并说明基本应用,建议配置。如果 default.jfc 中没有打开或者需要修改的配置,会将配置文件代码发出来。1. JFR 相关 Event一共4个 Event,但是需要关心的就下面这两个Data Loss:数局丢失 Event,当有数据发生丢失时,会有这个Event ...
2020-04-03 18:11:55 59348
原创 深度探索JFR - JFR详细介绍与生产问题定位落地 - 2. 通过一个线上调优例子了解JMC 与 Event 结构与详细配置
查看 JFR 事件的工具 - JMC (Java Mission Control)官网地址:https://adoptopenjdk.net/jmc.html国内下载起来比较慢,建议在aws上面建一个欧洲法兰克福的实例,在这个实例上先下载好,然后传输到本地。或者直接用我下面提供的连接下载,我也会跟着官网上面的版本进行更新的。我的私人下载地址:https://zhxhash-blog.oss-...
2020-04-01 16:52:53 60083
原创 深度探索JFR - JFR详细介绍与生产问题定位落地 - 1. JFR说明与启动配置
本文基于 OpenJDK 11 并涉及一些之后版本的特性,非 OpenJDK 11 的特性会被特殊标记出来什么是 JFR?我们都知道,黑匣子是用于记录飞机飞行和性能参数的仪器。在飞机出问题后,用于定位问题原因。JFR 就是 Java 的黑匣子。JFR 是 Java Flight Record (Java飞行记录) 的缩写,是 JVM 内置的基于事件的JDK监控记录框架。这个起名就是参考了...
2020-04-01 11:04:22 62970 4
原创 Java本地缓存框架系列-Caffeine-1. 简介与使用
Caffeine 是一个基于Java 8的高性能本地缓存框架,其结构和 Guava Cache 基本一样,api也一样,基本上很容易就能替换。 Caffeine 实际上就是在 Guava Cache 的基础上,利用了一些 Java 8 的新特性,提高了某些场景下的性能效率。这一章节我们会从 Caffeine 的使用引入,并提出一些问题,之后分析其源代码解决这些问题来让我们更好的去了解 Caffe...
2020-04-24 16:00:40 7731 1
原创 JEP解读与尝鲜系列2 - JEP 142 缓存行填充简化
本文基于 OpenJDK 8 ~ 14 的版本JEP 142 内容用于将某个或者某些需要多线程读取和修改的 field 进行缓存行填充。同时由于 Java 8 之前对于缓存行填充的方式,比较繁琐且不够优雅,还有可能缓存行大小不一的问题,所以这个 JEP 中引入了 @Contended 注解。什么是缓存行填充以及 False SharingCPU 缓存结构:CPU 只能直接处理寄存器...
2020-04-18 15:28:12 617
原创 通过一些常见问题回顾Maven依赖中容易犯错的点
原文地址: http://andresalmiray.com/maven-dependencies-pop-quiz-results/网上看到这篇文章,感觉很有价值,弄清了一些我之前理解错的点,这里翻译并分享下.首先,先上一下我个人总结的结论:Maven依赖可以分为如下几部分:直接依赖,就是本项目 dependencies 部分的依赖间接依赖,就是本项目 dependencies ...
2020-04-15 16:53:20 376
原创 MySQL分割一行为多行的思路
最近数据分析有需求,分析运营活动短信用户,但是发送短信的用户是通过 JSON 字符串数组存储在一个 text 字段的。内容类似于:["user1", "user2", "user3"....]数据分析想分析这些用户,那么就需要 in 这些用户查询。自己手动拼 SQL 太蛋疼,而且好几万几十万的用户,拼成SQL,复制粘贴也够蛋疼的。那么可以考虑将这一行分割为多行,作为一个字段。mysql.h...
2020-04-15 12:01:13 1577
原创 增强 Stream 接口的 distinct 方法的一些思考
遇到的问题Java 8 开始引入了 Stream, 其中的 api 一直在不断的优化更新完善,Java 9 中更是引入了 ofNullable 还有 takeWhile 和 dropWhile 这两个关键 api。有时候,我们想对 Stream 中的对象进行排重,默认的可以用 distinct 这个 api,例如:List<String> collect = Arrays.stre...
2020-04-14 17:59:07 1469 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人