The note for java learning openjdk
GC暂停时间与堆大小无关
方法层面的性能优化
- 接口不同实现在给定条件下的吞吐量
- 准确知道某个方法的执行时间,执行时间与输入之间的相关性
- 返回值
- lamda表达式
- JVM退出时动态创建共享归档文件:导出jsa
java -XX:ArchiveClassesAtExit=hello.jsa -cp hello.jar Hello
- 用动态创建的共享归档文件运行应用:使用jsa
java -XX:SharedArchiveFile=hello.jsa -cp hello.jar Hello
PlainSocketImpl
通过jdk.net.usePlainSocketImpl
来切换到旧版本
类型判断的同时支持类型转换
- 空指针异常会打印出是哪个对象导致的
- 在jdk15中默认开启,在jdk14中需要配置虚拟机参数
-XX:+ShowCodeDetailsInExceptionMessages
在jdk12和jdk13中新增的相关特性 确定使用
- 添加:表示取消换行操作
- 添加\s:表示一个空格
使用少 维护工作大
- 会产生内存碎片,导致并发清除后,用于线程可用的空间不足
用于类的使用,密封的类和接口限制其他可能实现他们的类和接口 声明一个类是sealed类时,使用permits限制可以被继承的子类,子类继承被sealed修饰的父类时,必须使用关键字,final/sealed/non-sealed 进行二次修饰,做二次声明 final: 不可再被继承 sealed: 继续声明为密封类 non-sealed: 该类解除密封限制
隐藏类hidden classes
不能直接使用的类,只能通过反射机制来调用
特性细节同JDK14
默认GC仍然为G1,只需要通过-XX:+UseZGC就可以启用
特性细节同JDK14