以前のバージョンのコンパイラでコンパイルされた古いコードがいくつかあるとします。 String
クラスのメモリ消費量が少ないか、最新のjdkで再コンパイルする必要がありますか?コンパイル済みの古いコードは、最新のjreでコンパクトな文字列の利点がありますか?
1
A
答えて
1
はいの場合、古いバイトコードは再コンパイルなしでコンパクトストリング最適化の恩恵を受けます。これは、Stringクラス自体の実装に変更が加えられたためです。バイトコード形式はまだかなり高いレベルであり、文字列、オブジェクトなどの実際の実装を抽象化しています。
しかし、別の変更(JEP280)は、恩恵を受けるために再コンパイルが必要です。以前のバージョンのJavaでは、非定型の文字列連結が、フードの下で一連のStringBuilder(またはStringBuffer)呼び出しにコンパイルされました。従って"I have " + i + " cats"
のようなコードはnew StringBuilder().append("I have ").append(i).append(" cats").toString()
に相当します。 JEP280では、これを変更してinvokedynamic命令への連結をコンパイルする代わりに、実行時に選択されたライブラリに文字列連結の実装を本質的に移します。これは最適化そのものではありませんが、将来再コンパイルすることなく、より効率的な文字列連結を追加することができます。
関連する問題
- 1. JREの新しいバージョンではサウンドバンクが読み込まれませんが、古いバージョンではあります
- 2. 最新のPCLプロファイルバージョンに利点がありますか? (Xamarin.Forms)
- 3. .Netリフレクターを使用したコンパイル済みコードには、一部のユニコード文字があります
- 4. iphone用のffmpegのコンパイル済みビルド版がありますか?
- 5. リクエストパラメータの静的な最終文字列の利点?
- 6. jQuery要素を操作しながら、 `array.join`の文字列連結よりも利点はありますか?
- 7. JREで動作するようにコンパイルできるコードはありますか?
- 8. SecureStringはMSILの逆コンパイルに関して何か利点がありますか?
- 9. Java - インライン化コードには利点がありますか?
- 10. SSLの利点は面倒な価値がありますか?
- 11. コンパイル済みのCファイルにアクセスエラーがありません
- 12. コンパイル済みのRパッケージは下位互換性がありますか?
- 13. 奇数コンパイル済みコード
- 14. JDK 1.6コンパイル済みコードは、JDK 1.5コンパイル済みコードを呼び出します。どのようなエラーが表示されますか?
- 15. データベースからのPHPデコード済みJSON文字列戻り値NULL
- 16. コンパイル済みのPythonコードVs py2exe
- 17. 逆コンパイル済みコードの完成
- 18. parfor for matlabコンパイル済みコードへのアクセスローカルワーカープール
- 19. WPMLエコー翻訳済みの文字列
- 20. G ++コンパイル済みDLL(プラグイン)をVC++コンパイル済みアプリケーションで使用すると、どのような問題が発生する可能性がありますか?
- 21. 最初の文字が文字であるまで文字列から文字列を削除するには?
- 22. XSLTの文字列(文字列(。))にポイントがありますか?
- 23. php - 文字列が空でないか、または最初の文字が
- 24. 文字列内に新しい行がありますか?
- 25. 最高のWin32コンパイル済みスクリプト言語?
- 26. 定義済みの値リストからの文字列のベストマッチは?
- 27. 予期しない "エクスポートのデフォルト"コンパイル済みコード
- 28. ASP.NET - 文字列の最初の2文字は太字である必要があります
- 29. は、文字列の最初の文字を削除し、私はこの文字列の最初の文字を取得する必要があり、文字列
- 30. rails sort_by文字列が空の文字列で最新
クラスの内部動作を変更すると、それらを使用する他のすべてのクラスがこれらの変更の恩恵を受けることができます。それは、OOPにおけるカプセル化の全体的なポイントであり、ライブラリを使用しています。 – Holger