-
java.sleep()
java的thread.sleep方法是会响应中断的,cpu会使用定时器,定时器到时会触发中断让cpu调度这个线程,但是我不明白java中将线程设置中断,为什么sleep可以响应中断指令,是怎么做到的? Java 的 Thread.sleep() 为什么可以响应 interrupt()? 在 Java 中,Thread.sleep() 会放弃 CPU 执行权,并由 硬件定时器 触发中断来唤醒线程。…- 8
- 0
-
JDK12新特性及旧版本变更
新的字符串和文件方法 在 Java 11 中,我们已经获得了一些新的 String 方法,以及Files.readString() 和 writeString() 方法。而在 Java 12,JDK 开发人员对这两个类进一步扩展,新增了一些实用的方法。 String.indent() —— 方便的字符串缩进 在 Java 12 之前,如果我们想给字符串添加缩进,通常需要编写一个辅助方法,在字符串前…- 15
- 0
-
-
java-11-features
Lambda 参数的局部变量语法 JDK 增强提案 323允许在隐式类型 lambda 表达式的中使用“var”关键字。 先来看 显式类型 的 Lambda 表达式。在下面的代码中,参数 l 和 s 的类型 被明确声明(List<String> 和 String): (List<String> l, String s) -> l.add(s); 然而,Java 编译器…- 31
- 0
-
java-10-features
局部变量类型推断("var") 从 Java 10 开始,我们可以使用关键字 var 来声明局部变量(局部意味着在方法内部)。例如,以下定义是允许的: var i = 10; var hello = "Hello world!"; var list = List.of(1, 2, 3, 4, 5); var httpClient = HttpClient.n…- 26
- 0
-
Java 生态下想搞大流量下的 ws,是不是暂时只能 netty?
最近项目想上直播和拍卖业务,自身流量也是比较大,想问下目前业界 ws 方案下是不是更推荐 netty 或者有没有其他可以参考的方案呢? 直播推流这快准备用阿里云的,直播上会用到 ws 的也就是评论,拍卖可能就是出价和评论。 1. 使用 Netty 的建议 sagaxu:不要直接用 Netty,建议使用 Vert.x 或者 Quarkus。 wxw752:我们公司使用 Netty 处理 WebSoc…- 3
- 0
-
生产OOM排查
简化版代码: package com.mystic.ycc.blog.test; import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.Secre…- 12
- 0
-
线程和同步性能
线程和同步性能 线程和硬件 💡 CPU 增加线程并不能使应用程序性能倍增 任务被提交到一个队列(可能不止一个队列),然后一定数量的线程会从队列中取出任务并执行它们 线程池的大小对实现最佳性能至关重要 在某些情况下,过大的线程池会导致性能急剧下降 线程池大小应根据系统负载、CPU 和 I/O 任务比例来决定 线程数超出 CPU 数量可能会降低吞吐量 💡 CPU 不是瓶颈,外部资源是瓶颈时,增加的线程…- 16
- 0
-
JDK 8 到 JDK 23 的 语法糖(语言特性) 和 垃圾回收(GC)优化
JDK 8 到 JDK 23 的 语法糖(语言特性) 和 垃圾回收(GC)优化 语法糖(语言特性)演进 从 Lambda 表达式到模式匹配,Java 逐步引入更简洁的语法和现代编程范式。 JDK 8(2014) Lambda 表达式: List list = Arrays.asList("a", "b", "c"); list.forEa…- 20
- 0
-
关于 JDK 不同版本对 指令集支持
关于 JDK 不同版本对 指令集支持 1. JDK 8(2014年) 指令集支持: 基线指令集:主要针对 SSE2/SSE4.1/AVX1(如 Intel Haswell 之前的处理器)。 不支持 AVX-512(Skylake 及之后的新指令集)。 AES-NI 深度优化(仅部分支持)。 向量化运算优化有限。 适用场景: 传统企业应用,无需高性能计算。 兼容性优先,不追求最新硬件性能。 2. J…- 13
- 0
-
JAVA 对象头分析及Synchronized锁
JAVA 对象头分析及Synchronized锁 对象内存布局 HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。 [] 从上面的这张图里面可以看出,对象在内存中的结构主要包含以下几个部分: Mark Word(标记字段):对象的Mark Word部分占4个字节,其内容是一系列的标记位,比如轻…- 79
- 0
-
问题排查
问题排查 JDK自带的定位问题的工具? jps jps是jdk提供的一个查看当前java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。 jps –l # 输出输出完全的包名,应用主类名,jar的完全路径名 jstack jstack是jdk自带的线程堆栈分析工具,使用该命令可以查看或导出 Java 应用程序中线程堆栈信息。 # 基本…- 69
- 0
-
Java性能权威指南学习笔记-1
Java性能权威指南学习笔记-1 导论 JVM调优标志 布尔标志 -XX:+FlagName 表示开启 -XX:-FlagName 表示关闭 附带参数的标志 -XX:FlagName=something,表示将标志flagName的值设置为something Client和Server类虚拟机 Java的自动优化前提是机器被分为"Client"和"Server&quo…- 264
- 0
-
Java性能权威指南学习笔记-2
垃圾收集器入门 最主流的四个垃圾收集器 Serial收集器(常用于单CPU环境) Throughput(或Parallel)收集器 Concurrent收集器(CMS) G1收集器 垃圾收集器概述 所有应用线程都停止运行所产生的停顿被称为时空停顿(stop-the-world)。 垃圾收集由两步构成:查找不再使用的对象,以及释放这些对象所管理的内存。 分代垃圾收集器 根据情况将堆划分成不同的代(G…- 220
- 0
-
synchronized 锁机制的分析和验证
synchronized 锁机制的分析和验证 原文:https://www.moralok.com/2023/12/19/analysis-and-verification-of-the-synchronized-lock-mechanism/ 本文详细介绍了 Java 中 synchronized 锁的机制、存储结构、优化措施以及升级过程,并通过 jol-core 演示 Mark Word 的变…- 434
- 0
-
arthas使用
arthas使用 获取当前的实例属性值 vmtool 测试使用的类 @Service public class UserService { @Value("${user.default.pwd}") private String userDefaultPwd; } 配置文件 [可以使用appllo或者其他支持热更新配置的框架来测试属性是否刷新成功] user: default:…- 329
- 0
-
如何看懂字节码文件
如何看懂字节码文件 测试使用的类 public class Test { public int i; public long y; } 基础概念 每个Class文件的头4个字节被称为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件。不仅是Class文件,很多文件格式标准中都有使用魔数来进行身份识别的习惯,譬如图片格式,如GIF或者JPEG等在文件…- 225
- 0
-
JHSDB:基于服务性代理的调试工具
JHSDB:基于服务性代理的调试工具 JDK中提供了JCMD和JHSDB两个集成式的多功能工具箱,它们不仅整合了上一节介绍到的所有基础工具所能提供的专项功能,而且由于有着“后发优势”,能够做得往往比之前的老工具们更好、更强大。 JHSDB是一款基于服务性代理(Serviceability Agent,SA)实现的进程外调试工具。服务性代理是HotSpot虚拟机中一组用于映射Java虚拟机运行信息的…- 289
- 0
-
JVM GC 的安全点与安全区域
JVM GC 的安全点与安全区域 OopMap JVM 采用的可达性分析法有个缺点,就是从 GC Roots 找引用链耗时。 都说他耗时,他究竟耗时在哪里? GC 进行扫描时,需要查看每个位置存储的是不是引用类型,如果是,其所引用的对象就不能被回收;如果不是,那就是基本类型,这些肯定是不会引用对象的;这种对 GC 无用的基本类型的数据非常多,每次 GC 都要去扫描,显然是非常浪费时间的。 而且迄今…- 620
- 0
-
Java性能权威指南学习笔记-3
原生内存最佳实践 内存占用 概述 JVM也会为内部操作分配一些内存,这些非堆内存就是原生内存 应用中也可以分配原生内存(通过JNI调用malloc()和类似方法,或者是使用New I/O,即NIO时) JVM使用的原生内存和堆内存的总量,就是一个应用总的内存占用(Footprint) 测量内存占用 之所以存在已分配内存和保留内存之分,使用JVM(及所有程序)管理内存的方式导致的 线程栈是个例外。J…- 340
- 0
-
JVM 基础 – JVM 内存结构
JVM 基础 - JVM 内存结构 本文主要对JVM 内存结构进行讲解,注意不要和Java内存模型混淆了。原先这里放了一篇我自己整理的文章,最近看到 海星的javakeeper公众号 整理的文章,整理的很好。所以替换为他的文章,以方便你构筑JVM内存结构的知识体系。@pdai [TOC] 运行时数据区 内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实时运行…- 349
- 0
-
x86-TSO : 适用于x86体系架构并发编程的内存模型
x86-TSO : 适用于x86体系架构并发编程的内存模型 作者:执生 原文地址:https://www.cnblogs.com/lqlqlq/p/13693876.html Abstract : 如今大数据,云计算,分布式系统等对算力要求高的方向如火如荼。提升计算机算力的一个低成本方法是增加CPU核心,而不是提高单个硬件工作效率。 这就要求软件开发者们能准确,熟悉地运用高级语言编写出能够…- 456
- 0
-
JVM常用命令
JVM常用命令 本篇记录JVM常用的指令,通过Java的bin目录下强大的工具就能进行查看。 其中很多命令参考option参数,自己要多敲几遍才能记住。 JVM常用命令 其中[]方括号内的参数,表示可有可无。 jps JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。 命令格式 jps [option] [hostid] option参数 -l : 输出…- 561
- 0
-
垃圾回收算法是如何设计的?
底层原理:垃圾回收算法是如何设计的? 如果大家关注 JDK,会发现在频繁发布的 JDK 版本中,和垃圾回收相关的 JEP (JDK Enhancement Proposals,Java 增强提案)越来越多了,垃圾回收(Garbage Collection,GC)正处于方兴未艾的阶段。譬如,在 JEP-248 中 G1 替代了并行垃圾回收器成为 JVM 中默认的垃圾回收器,JEP-333 加入了实验…- 4.3k
- 0