读Java性能权威指南(第2版)笔记03_ Java SE API技巧中
1.Java性能权威指南(第2版)读后总结与感想2.读Java性能权威指南(第2版)笔记01_导言3.读Java性能权威指南(第2版)笔记02_ Java SE API技巧上
4.读Java性能权威指南(第2版)笔记03_ Java SE API技巧中
5.读Java性能权威指南(第2版)笔记04_ Java SE API技巧下6.读Java性能权威指南(第2版)笔记05_数据库性能JDBC7.读Java性能权威指南(第2版)笔记06_数据库性能JPA&SpringData8.读Java性能权威指南(第2版)笔记07_即时编译器上9.读Java性能权威指南(第2版)笔记08_即时编译器中10.读Java性能权威指南(第2版)笔记09_即时编译器下11.读Java性能权威指南(第2版)笔记10_原生内存12.读Java性能权威指南(第2版)笔记11_堆内存上13.读Java性能权威指南(第2版)笔记12_堆内存中14.读Java性能权威指南(第2版)笔记13_堆内存下15.读Java性能权威指南(第2版)笔记14_垃圾回收A16.读Java性能权威指南(第2版)笔记15_垃圾回收B17.读Java性能权威指南(第2版)笔记16_垃圾回收C18.读Java性能权威指南(第2版)笔记17_垃圾回收D19.读Java性能权威指南(第2版)笔记18_垃圾回收E20.读Java性能权威指南(第2版)笔记19_垃圾回收F21.读Java性能权威指南(第2版)笔记20_垃圾回收G22.读Java性能权威指南(第2版)笔记21_垃圾回收H23.读Java性能权威指南(第2版)笔记22_ 操作系统工具和Java监控工具24.读Java性能权威指南(第2版)笔记23_ 性能分析工具25.读Java性能权威指南(第2版)笔记24_ Java飞行记录器JFR26.读Java性能权威指南(第2版)笔记25_性能测试方法上27.读Java性能权威指南(第2版)笔记26_性能测试方法下28.读Java性能权威指南(第2版)笔记27_线程和同步性能上29.读Java性能权威指南(第2版)笔记28_线程和同步性能中30.读Java性能权威指南(第2版)笔记29_线程和同步性能下31.读Java性能权威指南(第2版)笔记30_Java服务器1. 缓冲I/O
1.1. 对于文件和套接字,压缩和字符串编码的操作,必须适当地对I/O进行缓冲
1.1.1. 两个流操作的是字节块(来自缓冲流)而不是一系列的单字节(来自ObjectOutputStream),它们会运行得更好
1.2. InputStream.read()
1.3. OutputStream.write()
1.4. 操作的是单个字符
1.5. FileInputStream.read()
1.6. FileInputStream.write()
1.7. 慢
1.8. 二进制数据的文件I/O
1.8.1. BufferedInputStream或BufferedOutputStream来包装底层的文件流
1.9. 使用字符(字符串)数据的文件I/O
1.9.1. BufferedReader或BufferedWriter来包装底层的流
1.10. ByteArrayInputStream类和ByteArrayOutputStream类
1.10.1. 用缓冲过滤流包装它们,意味着数据会被复制两次
1.10.1.1. 被复制到过滤流的缓冲区
1.10.1.2. 被复制到ByteArrayInputStream的缓冲区
1.10.1.3. 输出流也是如此
1.10.2. 在没有其他流参与的时候,应该避免缓冲I/O
1.11. GZIPOutputStream
1.11.1. 操作数据块比操作单字节数据更高效
1.12. ObjectOutputStream
1.12.1. 将单字节数据发送到下一个流
1.12.2. 下一个流是最终目的地
1.12.2.1. ByteArrayOutputStream,则无须缓冲
1.12.2.2. 中间有另一个过滤流,如GZIPOutputStream,有必要缓冲
2. 随机数
2.1. java.util.Random
2.1.1. 主要操作(nextGaussian()方法)是同步的
2.1.2. 锁上都会产生竞争
2.2. java.util.concurrent.ThreadLocalRandom
2.2.1. 当每个线程都有自己的随机数生成器时,Random类的同步就不再是问题
2.3. 伪随机算法
2.3.1. 确定性的
2.3.1.1. 并不能真正做到随机
2.3.2. 通过特定生成器查看这个数字序列,并最终算出下一个数字会是什么
2.4. java.security.SecureRandom
2.4.1. 使用一个系统接口来为其随机数据获取种子
2.4.2. 提供的数据基于真正的随机事件(如鼠标的移动)
2.4.3. 基于熵的随机性(entropy-based randomness)
2.4.3.1. 更安全
2.4.4. generateSeed()方法花费的时间无法确定,这取决于系统有多少未使用的熵
2.4.4.1. 性能本身变成了随机
2.4.4.2. 更好的解决方案是设置操作系统,使其提供更多的熵,这可以通过运行rngd守护进程来实现
2.4.5. SecureRandom类的阻塞问题可以通过修改配置来避免,但最好在操作系统层面通过给系统增加熵来解决
3. 类数据共享
3.1. Java 11
3.2. class data sharing,CDS
3.2.1. JVM之间共享类元数据的一种机制
3.2.2. 可以缩短JVM的启动时间
3.3. 只适用于从模块或JAR文件加载的类,不能共享(或加速加载)来自文件系统或网络URL的类
3.4. 常规的CDS(共享默认的JDK类)
3.5. 应用程序类数据共享
3.5.1. 可以共享任何一组类
3.6. XX:+DumpLoadedClassList=filename标志来运行你的应用程序
3.6.1. 将(在filename文件中)生成一个列表,其中包含你的应用程序已经加载的所有类
3.7. 使用这个类列表来生成共享存档
$ java -Xshare:dump -XX:SharedClassListFile=filename \
-XX:SharedArchiveFile=myclasses.jsa \
……类路径参数……
3.8. 使用共享存档来运行应用程序
$ java -Xshare:auto -XX:SharedArchiveFile=myclasses.jsa ……其他参数……
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库