Java 9新增了新的命令行选项-Xlog, 用于所有日志记录设置和统一的JVM日志记录
Xlog的参数遵循以下规则:
已按照在命令行中显示的顺序应用了多个参数。 最后的配置规则:对于相同的输出,多个参数可以按给定的顺序相互覆盖。 -Xlog[:option] option := [<what>][:[<output>][:[<decorators>][:<output-options>]]] 'help' 'disable' what := <selector>[,...] selector := <tag-set>[*][=<level>] tag-set := <tag>[+...] 'all' tag := name of …
June 23, 2021
JDK 6、JDK 7、JDK 8 内存模型演变 这些版本的JVM内存模型主要有以下差异:
JDK 6:有永久代,静态变量存放在永久代上。 JDK 7:有永久代,但已经把字符串常量池、静态变量,存放在堆上。逐渐地减少永久代的使用。 JDK 8:无永久代,运行时常量池、类常量池,都保存在元数据区,也就是常说的元空间。但字符串常量池仍然存放在堆上。 内存模型各区域概要 程序计数器 较小的内存空间、线程私有,记录当前线程所执行的字节码行号。 如果执行 Java 方法,计数器记录虚拟机字节码当前指令的地址,本地方法则为空。 这一块区域没有任何 OutOfMemoryError 定义。 Java虚拟机栈 每一个方法在执行的同时,都会创建出一 …
June 22, 2021
Java 7 引入了@SafeVarargs注解来抑制当方法具有varargs(可变数量的参数)时出现的不安全操作警告,比如具有模糊类型(比如:泛型)的可变参数。@SafeVarargs注解只能用于无法覆盖的方法(final方法、static方法或构造函数),因为重写方法仍然可以对其 varargs(可变数量的参数)执行不安全操作。
June 21, 2021
什么是菱形运算符 菱形操作符是作为 java SE 7 中的新功能引入的。菱形操作符的目的是通过将泛型类型保留在表达式的右侧来避免冗余代码。
June 21, 2021
在Java 7或更早版本中,一个接口中只能定义如下两种:
常量 抽象方法 在Java 8中接口引入了默认方法和静态方法。可以在接口中编写方法实现,仅仅需要使用default关键字来定义它们。
June 18, 2021