![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入OpenJDK 11+
文章平均质量分 93
本系列会包罗 OpenJDK 的一切元素,包括从 Java 8 以来的所有新特性,JVM 内部元素,虚拟机设计与Java 内存模型分析,JDK相关工具,监控并定位 JVM 瓶颈等等
hashcon
做自媒体技术分享很久了,大家的抬爱与支持让我很开心很感激,但是个人本来做这些也并不是为了收益,只是为了个人学习与传播知识帮助更多的人,所以我将全网所有账号全部收益,持续捐给各种公益项目,也算不辜负大家的抬爱,也是回报祖国对我的一番培养。
曾任职于顺丰,华为,网易等公司,从Java小白,成长为资深开发与项目组首席架构师。喜欢源码与开源,曾贡献 MyCat1.6 核心源码,贡献过druid,Spring Cloud,dubbox,Apache RocketMQ,Apache Bookeeper 等多开源项目。
展开
-
JVM 输出 GC 日志导致 JVM 卡住,我 TM 人傻了
最近,我们升级了 Java 17。后来,我们的 k8s 运维团队为了优化我们的应用日志采集,将我们所有 pod (你可以理解为一个 Java 微服务进程)的 JVM 日志都统一采集到同一个 AWS 的 EFS 服务(EFS 是 Elastic File System 的缩写,弹性块文件存储系统,底层是 NFS + S3 对象存储集群),我们对于 JVM 日志配置包括以下几个:JVM 统一日志配置请参考:https://zhuanlan.zhihu.com/p/111886882在这样做之后,我们的应用出现这原创 2022-06-17 15:21:35 · 649 阅读 · 0 评论 -
我所使用的生产 Java 17 启动参数
目前正常微服务综合内存占用+延迟+吞吐量,还是 G1 更优秀。但是如果你的微服务本身压力没到机器极限,要求延迟低,那么 ZGC 最好。如果你是实现数据库那样的需求(大量缓存对象,即长时间生存对象,老年代很大,并且还会可能分配大于区域的对象),那么必须使用 ZGC。使用 G1GC 启动参数:使用 ZGC 启动参数:其中,需要做成环境变量外部可以配置的是:JVM 日志配置请参考:https://zhuanlan.zhihu.com/p/111886882以下需要做成可以在外部配置的环境变量:除了以上内存,J原创 2022-06-15 08:44:06 · 3866 阅读 · 0 评论 -
通过实例程序验证与优化谈谈网上很多对于Java DCL的一些误解以及为何要理解Java内存模型
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本文基于 OpenJDK 11 以上的版本最近爆肝了这系列文章 全网最硬核 Java 新内存模型解析与实验,从底层硬件,往上全面解析了 Java 内存模型设计,并给每个结论都配有了相关的参考的论文以及验证程序,我发现多年来对于 Java 内存模型有很多误解,并且我发现很多很多人都.原创 2022-04-16 10:47:54 · 390 阅读 · 0 评论 -
全网最硬核 Java 新内存模型解析与实验 - 4. Java 新内存访问方式与实验
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到位,如有异议欢迎留言提出。本系列会不断更新,结合大家的问题以及这里的错误和疏漏,欢迎大家留言如果你喜欢单篇版,请访问:全网最硬核 Java 新内存模型解析与实验单篇版(不断更新QA中).原创 2022-03-30 22:01:13 · 548 阅读 · 1 评论 -
全网最硬核 Java 新内存模型解析与实验 - 3. 硬核理解内存屏障(CPU+编译器)
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到位,如有异议欢迎留言提出。本系列会不断更新,结合大家的问题以及这里的错误和疏漏,欢迎大家留言如果你喜欢单篇版,请访问:全网最硬核 Java 新内存模型解析与实验单篇版(不断更新QA中).原创 2022-03-30 21:59:49 · 1084 阅读 · 0 评论 -
全网最硬核 Java 新内存模型解析与实验 - 2. 原子访问与字分裂
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判。如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 issue,谢谢支持~本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到位,如有异议欢迎留言提出。本系列会不断更新,结合大家的问题以及这里的错误和疏漏,欢迎大家留言如果你喜欢单篇版,请访问:全网最硬核 Java 新内存模型解析与实验单篇版(不断更新QA中).原创 2022-03-30 21:58:29 · 555 阅读 · 0 评论 -
全网最硬核 Java 新内存模型解析与实验单篇版(不断更新QA中)
本篇文章参考了大量文章,文档以及论文,但是这块东西真的很繁杂,我的水平有限,可能理解的也不到位,如有异议欢迎留言提出。本系列会不断更新,结合大家的问题以及这里的错误和疏漏,欢迎大家留言原创 2022-03-30 20:44:44 · 1837 阅读 · 3 评论 -
JEP解读与尝鲜系列4 - Java 16 中对于 Project Valhalla 的铺垫
这是 JEP 解读与尝鲜系列的第 4 篇,之前的文章如下:JEP解读与尝鲜系列 1 - Java Valhalla与Java Inline classJEP解读与尝鲜系列 2 - JEP 142 缓存行填充简化JEP解读与尝鲜系列 3 - Project Loom 使用虚线程进行同步网络 IO 不阻塞的底层原理在系列之前的第一篇文章 - JEP 解读与尝鲜系列 1 - Java Valhalla 与 Java Inline class 中,我介绍了 Project Valhalla 项目中的.原创 2022-01-06 08:12:13 · 834 阅读 · 1 评论 -
Java Record 的一些思考 - 默认方法使用以及基于预编译生成相关字节码的底层实现
快速上手 Record 类我们先举一个简单例子,声明一个用户 Record。public record User(long id, String name, int age) {}这样编写代码之后,Record 类默认包含的元素和方法实现包括:record 头指定的组成元素(int id, String name, int age),并且,这些元素都是 final 的。record 默认只有一个构造器,是包含所有元素的构造器。record 的每个元素都有一个对应的 getter(但这种 ge原创 2021-12-23 08:58:29 · 530 阅读 · 0 评论 -
JEP 尝鲜系列 3 - 使用虚线程进行同步网络 IO 的不阻塞原理
相关 JEP:JEP 353 Reimplement the Legacy Socket APIJEP 373 Reimplement the Legacy DatagramSocket API使用虚线程进行网络 IOProject Loom 主要目标是在 Java 平台上提供一种易于使用、高吞吐量的轻量级并发性和新的编程模型的 JVM 特性和API。这带来了许多有趣和令人兴奋的前景,其中之一是简化网络交互的代码的同时兼顾性能。现在的服务器能够处理打开的套接字连接的数量,远远超过它们能够支持的线原创 2021-05-25 16:49:51 · 353 阅读 · 0 评论