タグ付けされた質問 「java-14」

5
アプリケーションが遅く、JVMがシングルCPUセットアップとJava 12以降で頻繁にハングする
クライアントアプリケーションがあります(10年以上の開発)。最近、そのJDKがOpenJDK 11からOpenJDK 14にアップグレードされました。シングルCPU(ハイパースレッディングが無効)のWindows 10セットアップ(および使用可能なCPUが1つだけのVirtualBoxマシン内)では、Java 11に比べてアプリケーションの起動が非常に遅くなります。さらに、ほとんどの場合100%のCPUを使用します。プロセッサアフィニティを1つの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 with -XX:-UseBiasedLocking:46秒 OpenJDK 13.0.2 with -XX:-ThreadLocalHandshakes:40秒 OpenJDK 14:5〜6分 OpenJDK 14 with -XX:-UseBiasedLocking:3-3,5分 OpenJDK 15 EAビルド20:〜4,5分 使用されているJDK(および上記のオプション)のみが変更されています。(-XX:-ThreadLocalHandshakesJava 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 | …
24 java  hang  java-14 

2
レコードのデフォルトコンストラクターを定義する
レコードがあり、それにデフォルトのコンストラクターを追加したい。 public record Record(int recordId) { public Record { } } しかし、それはintparamでコンストラクタを作成しました。 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
ロンボクゲッター/セッターvs Java 14レコード
私はLombokプロジェクトが大好きですが、最近はJava 14の新機能のいくつかを読んで試しています。 新しい機能には、コンストラクター、プライベート最終フィールド、アクセサー、equals / hashCode、getters、toStringメソッドなどの機能がすでに組み込まれているクラスを作成できるようにするrecordキーワードがあります。 今私の質問です:ロンボクの機能に依存する方が良いですか、それともレコード機能を使い始めるべきですか: これを使用する方が良いです: record Person (String name, String surname) {} またはその: @AllArgsConstructor @ToString @EqualsAndHashCode public class GetterSetterExample { @Getter private int name; @Getter private int surname; } 両方のアプローチの長所と短所は何ですか?

2
エラーのため、Java 14でnetbeans 11.3をインストールできませんでした:「サポートされていないJVMバージョン」
Java 14でnetbeansをインストールしようとしています。 エラーが発生しています- > sudo ./Apache-NetBeans-11.3-bin-linux-x64.sh --javahome /home/raj/.sdkman/candidates/java/current Configuring the installer... Searching for JVM on the system... Unsupported JVM version at /home/raj/.sdkman/candidates/java/current. Try to specify another JVM location using parameter --javahome 以下は私のJavaの詳細です- > which java /home/raj/.sdkman/candidates/java/current/bin/java > java --version openjdk 14 2020-03-17 OpenJDK Runtime Environment (build 14+36-1461) OpenJDK 64-Bit Server …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.