タグ

javaに関するmillfiのブックマーク (8)

  • Java9から17で入った新機能ピックアップ

    Java9から17で入った新機能で、実際コード書く上で使いそうなものをピックアップします。 Java8を使い続けていた人向けです。 レコード (Java16) 不変なデータを保持するクラスを簡単に定義できるようになりました。 classの代わりにrecordで定義します。 名前の後に、フィールドのリスト(コンポーネントと呼ばれます)を記載します。

    Java9から17で入った新機能ピックアップ
    millfi
    millfi 2022/03/20
  • 恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、

    恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ
    millfi
    millfi 2021/06/02
    “先ほどのコードの実装上、finalize が呼ばれない限り close 処理が行われません。finalize が呼ばれる場合というのはすなわち GC が発生する場合です。GC が発生しない場合ずっとメモリ上に蓄積したままになります。”
  • Androidに最適化されたJavaクラス一覧 - Qiita

    はじめに Androidではモバイル端末での処理に最適化されたいくつかの代替クラスが用意されています。 ほとんどがHashMap関係のメモリ消費を抑えるためのものですが、Android Developersにも代替クラスをまとめたページはないようなので、知っている範囲でまとめてみました。 SparseArray 似ている機能:HashMap<Integer,T> SparseArrayはAndroid向けにパフォーマンスが改良されたHashMap<Integer,T>の代替クラス。 Supportライブラリに最新のSparseArrayと同じ実装になったSparseArrayCompatがある。 http://developer.android.com/reference/android/support/v4/util/SparseArrayCompat.html LongSparseAr

    Androidに最適化されたJavaクラス一覧 - Qiita
  • Mathの高速化を検証する - Qiita

    Mathは当に遅いのか 色の距離(色差)を計算するときにちょっとだけ試してみたので,実際によくある(小手先)高速化手法でMathが速くなるのか検証してみた. 検証方法 JavaAndroidで検証. 単純に実行時間をSystem.nanoTimeで取得し,比較している. 検証順や検証タイミングで最適化がかかったりするので,何回か実行して落ち着いた値で比較している. Javaの検証はIntel Xeon E5 3.5GHzのMac Pro,Androidの検証はQualcomm Snapdragon 800 MSM8974 2.2GHzのSO-02Fで試している. 従来のMathクラスと,実装したDMathクラスで比較した. 10万回実行して1回あたりの実行時間をnano秒で表示している.詳しい方法は一番下を参照. べき乗の高速化 べき乗を計算するMath.pow()は小数のべき乗もサポ

    Mathの高速化を検証する - Qiita
    millfi
    millfi 2020/08/31
    AndroidとJavaで異なる結果が出るのが気になるところ。
  • 高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development

    先日、TimSortというソートアルゴリズムが話題になりました。TimSortは、高速な安定ソートで、Python(>=2.3)やJava SE 7、およびAndroidでの標準ソートアルゴリズムとして採用されているそうです。 C++のstd::sort()よりも高速であるというベンチマーク結果1が話題になり(後にベンチマークの誤りと判明)、私もそれで存在を知りました。実際のところ、ランダムなデータに対してはクイックソート(IntroSort)ほど速くないようですが、ソートというシンプルなタスクのアルゴリズムが今もなお改良され続けていて、なおかつ人々の関心を引くというのは興味深いものです。 しかしながら、オリジナルのTimSortのコードは若干複雑で、実際のところどういうアルゴリズムなのかわかりづらいところがあると思います。そこで今回はTimSortのアルゴリズムをできるだけわかりやすく解

    高速な安定ソートアルゴリズム "TimSort" の解説 - Preferred Networks Research & Development
  • java

    形式 java [options] classname [args] java [options] -jar filename [args] options スペースで区切ったコマンド行オプション。「オプション」を参照してください。 classname 起動するクラスの名前。 filename 呼び出されるJavaアーカイブ(JAR)ファイルの名前。-jarオプションと一緒にのみ使用されます。 args スペースで区切られたmain()メソッドに渡される引数。 説明 javaコマンドはJavaアプリケーションを起動します。これは、Java Runtime Environment (JRE)を起動し、指定されたクラスをロードし、そのクラスのmain()メソッドを呼び出すことによって行われます。このメソッドは、publicおよびstaticとして宣言する必要があり、値を返すことができず、Str

  • IntelliJ IDEAのJava→Scalaコード自動変換を試す : mwSoft blog

    IntelliJ IDEAにはJavaのコードをScalaのコードに自動で変換する機能が付いている。 プロジェクトの中にJavaのクラスを作って、Refactor→Convert Java File To Scalaで変換ができる。また、プロジェクト中のJavaのコードの一部をコピってScalaのコードの中にペーストすると、Scalaのコードに自動変換した上で貼り付けてくれたりもする。 これをScala入門者が困った時用の機能として勧めて良いものか確認したかったので、軽く調査してみる。結論として、それなりに救ってくれそう。 以下、IntelliJ IDEAにJavaScala変換してもらった結果。 ================================================== 【普通の文字列】 // 変換前 String str = "文字列"; ↓↓↓ // 変換

    millfi
    millfi 2020/05/25
    “({ i += 1; i})”これウケるな
  • ジェネリック型配列は作れるか? - かとじゅんの技術日誌

    ごきげんうるわしゅぅ。 さて、今回はジェネリックスの話題。 ジェネリックスになれてくるとうっかり書いてしまうのが、以下のコード。 public class MyArray<E>{ private E[] elements; public MyArray(int n){ elements = new E[n]; } public E get(int index){ return elements[index]; } public void set(int index, E value){ elements[index] = value; } } これは機能しそうですが、実際には以下でコンパイルエラーになります。 elements = new E[n]; え?なぜできないの?って考えてしまうのですが、Eなどの具象化不可能型*1は配列を生成できないのです。 回避方法その1 えぇい、Listにして

    ジェネリック型配列は作れるか? - かとじゅんの技術日誌
    millfi
    millfi 2020/03/30
    なるほどなあ
  • 1