Questions tagged «java-14»

5
应用程序速度慢,频繁的JVM因单CPU设置和Java 12+而挂起
我们有一个客户应用程序(经过10多年的发展)。其JDK最近从OpenJDK 11升级到OpenJDK 14。与Java 11相比,在单CPU(禁用超线程)的Windows 10设置(以及仅具有一个可用CPU的VirtualBox机器中)中,应用程序启动速度非常慢。此外,该应用程序大多数时候都使用100%CPU。我们还可以通过将处理器关联性设置为仅一个CPU(c:\windows\system32\cmd.exe /C start /affinity 1 ...)。 在VirtualBox机器上启动应用程序并以最少的手动交互进行查询的一些测量: OpenJDK 11.0.2:36秒 OpenJDK 13.0.2:〜1.5分钟 OpenJDK 13.0.2与 -XX:-UseBiasedLocking:46秒 OpenJDK 13.0.2与 -XX:-ThreadLocalHandshakes:40秒 OpenJDK 14:5-6分钟 OpenJDK 14与 -XX:-UseBiasedLocking:3-3.5分钟 OpenJDK 15 EA Build 20:约4.5分钟 仅更改了使用的JDK(以及上述选项)。(-XX:-ThreadLocalHandshakes在Java 14中不可用。) 我们已经尝试记录JDK 14的功能-Xlog:all=debug:file=app.txt:uptime,tid,level,tags:filecount=50。 使用OpenJDK 11.0.2每秒计数日志行似乎相当平稳: $ cat jdk11-log/app* | grep "^\[" | cut -d. -f 1 | cut …
23 java  hang  java-14 

2
定义记录的默认构造函数
我有一条记录,想要向其添加默认构造函数。 public record Record(int recordId) { public Record{ } } 但是它创建了带有int参数的构造函数。 public final class Record extends java.lang.Record{ private final int recordId; public Record(int); //other method } 我们如何向记录添加默认构造函数?

1
如何记录Java Record参数?
应该如何记录Java Record参数?我指的是最终成为构造函数参数的参数,类字段。 我试过了: /** * @param name the name of the animal * @param age the age of the animal */ public record Animal(String name, int age) { } 但是IntelliJ IDEA将@params 标记为错误。我找不到有关此方法工作原理的在线示例。我找到的最接近的讨论是https://bugs.openjdk.java.net/browse/JDK-8225055。 我在JDK中发现了一些单元 测试,似乎暗示这应该可行。也许这是一个IDE错误? 我正在使用OpenJDK 14 + 36-1461,IDEA 2020.1。 为了防止万一,我针对IDEA 提交了错误报告。

3
Java 14记录和数组
给出以下代码: public static void main(String[] args) { record Foo(int[] ints){} var ints = new int[]{1, 2}; var foo = new Foo(ints); System.out.println(foo); // Foo[ints=[I@6433a2] System.out.println(new Foo(new int[]{1,2}).equals(new Foo(new int[]{1,2}))); // false System.out.println(new Foo(ints).equals(new Foo(ints))); //true System.out.println(foo.equals(foo)); // true } 看来,很明显,该阵列的toString,equals方法是使用(而不是静态方法,Arrays::equals,Arrays::deepEquals 或Array::toString)。 所以我想Java 14 Records(JEP 359)在数组上不能很好地工作,相应的方法必须由IDE生成(至少在IntelliJ中,默认情况下会生成“有用的”方法,即它们使用静态方法)在Arrays)。 还是有其他解决方案?

3
龙目岛(Lombok)Getter / Setter vs Java 14记录
我喜欢Lombok项目,但如今,我正在阅读并尝试Java 14的一些新功能。 在新功能内部,有record关键字,该关键字允许创建具有以下内置功能的类:构造函数,私有最终字段,访问器,equals / hashCode,getter和toString方法。 现在我的问题是:最好依靠Lombok的功能,还是我们应该开始使用记录功能: 最好使用这个: record Person (String name, String surname) {} 或者那个: @AllArgsConstructor @ToString @EqualsAndHashCode public class GetterSetterExample { @Getter private int name; @Getter private int surname; } 两种方法的优缺点是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.