タグ

javaと性能に関するlearnのブックマーク (17)

  • jvisualvmを使ったCPUプロファイリング - Javaで画像ビューアを開発してみる日記

    ここ最近は機能追加の進捗しか書いていなかったので、今回は、技術的なことも少し書いてみたい。ということで、jvisualvmを利用したCPUプロファイリングの方法を紹介しよう。 jvisualvmとは、JDKに標準で付属するプロファイラだ*1。JavaVMのメモリ使用量や、スレッドの動作状況など、基的な情報をリアルタイムで取得、表示してくれる。さっそく、起動してみる。 jvisualvmの起動 一番初めに、測定対象のJavaプログラムを起動しておこう。起動を確認したら、コマンドラインより、「jvisualvm」と打ち込む。すると、jvisualvmが起動して、次の画面が表示される。 左側には、起動中のJVMの一覧が表示される。ここでは、jvisualvm自身のvm、開発に利用しているIDEであるNetBeans6.1、そして開発中の画像ビューアjgbがあることが分かる。さっそく、開発中の画

    jvisualvmを使ったCPUプロファイリング - Javaで画像ビューアを開発してみる日記
  • Java Performance Tuning

    COURSES AVAILABLE NOW. We can provide training courses to handle all your Java performance needs Latest news NEW: FEBRUARY 2024 NEWSLETTER We list all the latest Java performance related news and articles "Java 22 has one significant new feature, the Foreign Function and Memory API - finally released after more than 10 years in development" All the latest Java performance tips extracted in concise

  • JDK 6 update 14のG1GCを試してみた - Bouldering & Com.

    さすがにまだJConsoleもVisualVMも対応してない。JConsoleで繋ぐとヒープがまったくないように表示されてフシギな感じ。 結論 ちゃんとオプションが効いて、停止時間もオプションで指定した通りになっているみたい。 けど、TomcatでG1GCを有効にして実行したときは、オプションで指定した停止時間以上に止まっちゃってた。こっちはもうちょっと調査。 G1GCを有効にするためには 以下のオプションをつければOK -XX:+UnlockExperimentalVMOptions \ -XX:+UseG1GC \ -XX:MaxGCPauseMillis=100 だけど、JMXでの監視がまだできないので昔ながらの方法でgcログを吐かせる。 -XX:+UnlockExperimentalVMOptions \ -XX:+UseG1GC \ -XX:MaxGCPauseMillis=10

    JDK 6 update 14のG1GCを試してみた - Bouldering & Com.
  • 「+」演算子での文字列連結は、コンパイラでStringBuilder#append()にされるよ! - うなの日記

    文字列をちょこっと連結したい時に、いちいちStringBuilderを使うのは面倒くさいですよねー。 というか、「+」で連結しても実はコンパイラがうまいこと最適化してくれるんじゃね?とふと思い立って調べて見ました。 結論:単純な連結なら、コンパイラがちゃんとStringBuilderにしてくれます。 ↓のような1ステートメントに収まる単純な文字列連結であれば、コンパイラがちゃんとStringBuilderに変換してくれます。 // リテラルの連結 String a1() { return "a" + "b"; } String a2() { return "a" + "b" + "c"; } String a3() { return "a" + 10; } String a4() { return 10 + "a"; } String a5() { return "a" + 10 + "b

    「+」演算子での文字列連結は、コンパイラでStringBuilder#append()にされるよ! - うなの日記
  • Javaパフォーマンス計測 JITとの闘い - プログラマーの脳みそ

    前回の文字列操作編では適当に文字列操作のパフォーマンスを測定しようとしたらGC様とJITコンパイラ様に阻まれた、という話だった。モヒカン族*1が「てめえの計測はなっちゃいねー!ひゃっはー!」と殴りかかったらケンシロウみたいなのが出てきて「あべしっ」となった、ぐらいのつまらない話だったが、反省してこれらと向かい合ってみたい。 JITコンパイラについての情報 JITコンパイラ(Just In Time compiler)とはインタープリタ方式のプログラム言語のランタイムが実行時に必要に応じて部分的にネイティブコード(CPUが直接実行できるマシン語)に変換することで高速化するというコンパイラである。もともとはもっと狭義のニュアンスだったが、今ではJITコンパイルとHotSpot動的コンパイルを併せて広義にJITコンパイル、それを実施する実態をJITコンパイラと呼んでいる感じだ。*2 ただ、やみく

    Javaパフォーマンス計測 JITとの闘い - プログラマーの脳みそ
  • 「メモリーを意識してみよう」第4回 進化するメモリー管理:ITpro

    先々週にHotSpot VMでのメモリー管理について解説しました。ここでキーとなるのは世代別GCです。 HotSpot VMで世代別GCが採用される以前は,Old領域のGCで使用されるMark & Sweep GCだけでした。世代別GCが導入されたことにより,GCのパフォーマンスは劇的に向上したのです。 しかし,GCの進化はここで終わってしまったのではありません。Java SE 6(開発コード名Mustang)にいたるまで,様々な改良が加えられてきました。 今週はそれらの新しいGCの手法について解説していきます。その前に,まずは基となるMark & Sweep GCを説明しましょう。 Mark & Sweep GC Mark & Sweep GCは二つのフェーズでGCを行います。 はじめのフェーズで,使用しているインスタンスに印をつけます(Mark,図1a)。Markにはルートインスタン

    「メモリーを意識してみよう」第4回 進化するメモリー管理:ITpro
  • HotSpot VMの特性を知る

    記事は、HP-UX Developer Edgeに掲載された記事を株式会社アットマーク・アイティおよび記事の筆者が独自の判断のもとに加筆・修正したものです。 連載の最終回は、HotSpot VMに固有の振る舞いを学びます。HotSpot VMのデフォルト設定ではパフォーマンスが思うように向上しないケースを紹介し、対処方法を説明します。また後半では、JVMのPermanent領域のチューニング方法を説明します。 ベンチマーク・プログラムからHotSpot VMの特長を探る アプリケーションのチューニングの効果を比較するためにしばしば作成されるのが、簡単なベンチマーク・プログラムです。しかし、HotSpotベースのJVMでは、ベンチマークの設計のまずさが誤解を生む原因となりかねません。例えば、ベンチマークによっては、旧型のJITJust-In-Time)コンパイラを備えたClassic

    HotSpot VMの特性を知る
  • Javaの性能 - Wikipedia

    Javaの性能(ジャバのせいのう)では、Javaプラットフォームの性能について説明する。プログラミング言語としてのJavaに対する批判や、Javaプラットフォームの性能に対する批判は「Javaに対する批判」の記事を参照のこと。この記事ではJavaプラットフォームの性能について批判以外の説明をする。 プログラミング言語Javaは、その「ネットワークから送り込まれるプログラムの安全な実行」や「write once, run anywhere」というスローガンを、業界にありがちなスローガンだけのスローガンではなく可能な限り達成するべく、Javaバイトコードにコンパイルするコンパイラと、Javaバイトコードを解釈実行するインタプリタであるJava仮想マシン (Java VM, JVM)、という構成の実装を、公式の実装として伴って発表された。 コンピュータ科学的には特に目新しいものではない。しかし、

  • Java 暗号化拡張機能 JDK5.0

    Java Is the Language of Possibilities Java is powering the innovation behind our digital world. Harness this potential with Java resources for student coders, hobbyists, developers, and IT leaders.

  • Java 6のスレッド最適化は実際に動作しているのか? - パートII

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Java 6のスレッド最適化は実際に動作しているのか? - パートII
    learn
    learn 2011/02/23
    元記事のコメントによると、バイアスド・ロックが3,4秒経過しないと適用されないのは、デフォルトでJVM起動後4秒は適用しないようになっているからで、-XX:BiasedLockingStartupDelay=0をつければすぐに適用されるとのこと
  • Java 6のスレッド最適化は実際に動作しているのか?

    はじめに - Java 6におけるスレッドの最適化 Sun、 IBM、BEAやその他のJVMベンダーが、それぞれのJava 6仮想マシンが提供するロック管理と同期の最適化に多くの注意を払ってきました。バイアスドロック、ロックの粗粒度化、エスケープ解析によるロックの削除、適応型スピンロックといった機能は、すべてアプリケーションのスレッド間でより効果的なオブジェクト共有を可能にし、並列性をより高めるために設計されたものです。こうした個々の機能は洗練されており、興味深いものですが、疑問があります;当にこうした約束を果たしてくれているのでしょうか?2つのパートからなるこの記事では、私はこうした機能を詳しく調査します。シングルスレッドベンチマークの助けを借りて、パフォーマンスに関する疑問に答える試みをしようと思います。 ロックは悲観的である Java でサポートされているロックの(ほとんどのスレッ

    Java 6のスレッド最適化は実際に動作しているのか?
  • Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ

    前回でパフォーマンス計測に用いるタイマーについての理解を深めたので、やっとパフォーマンスの計測を始めることができる。 今回のテーマはJavaの文字列連結だ。タイムリーだね。 文字列連結についての基礎知識 Javaの文字列連結についての言語仕様まわりは Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌 が詳しい。しかし、パフォーマンス計測がなっちゃない。パフォーマンスの計測はそう簡単なものではない。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての*1。 そんなわけで、計測方法を工夫してみよう。二重ループとし、内側を1000回、それを500回繰り返す。ループが1回まわる間に1回ずつSy

    Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ
    learn
    learn 2011/02/23
    へえ、知らなかった。すごいなJIT>実行時のプロファイリング結果から最適化が可能かを判断してホットスポットを最適化するようになっているらしい/ 追記:参考 http://t.co/HRybQT7 http://htn.to/vTkVjf http://htn.to/2GR6PS
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • JBoss.com - Forums - Stateless and JNDI once again

    Middleware is the technological foundation for cloud-native architectures and includes application runtimes, enterprise application integration and cloud services. Organizations turn to middleware as a way to keep application development quick and cost-effective in complex IT environments. Middleware can support application environments that work smoothly and consistently across a highly distribut

    JBoss.com - Forums - Stateless and JNDI once again
  • 連載: IBM Watson Workspace #鬼わか アプリケーション開発: 第 7 回: IBM Watson Workspace で AI を利用したアプリ連携の実現 #鬼わか 解説(前編)

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    連載: IBM Watson Workspace #鬼わか アプリケーション開発: 第 7 回: IBM Watson Workspace で AI を利用したアプリ連携の実現 #鬼わか 解説(前編)
  • HOT deploy が遅くなるとき - 日記

    実際に利用してみての注意点としては,再起動せずに変更を反映するホット・デプロイ機能は,クラス数が多くなると遅くなることを挙げた。開発が進みクラスが増えてくると,最終的はホット・デプロイを使わずにアプリケーション・サーバーを再起動した方が早くなったという。 Seasar Conference 2009 White でもそんな話があったようだし,最近 ML でも問い合わせがあったし,某巨大掲示板でも話題になってたので,少し (?) 書いておきます. まず,HOT deploy では必要となったコンポーネントだけがロードされます. 例えば Web アプリであれば SAStruts や Teeda などのフレームワークがリクエストに応じて fooAction とか fooPage という名前のコンポーネントを Seasar2 に要求するところから始まります. その際,Seasar2 はファイルシス

    HOT deploy が遅くなるとき - 日記
    learn
    learn 2009/06/20
    HOT deploy が遅くなるとき
  • Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か

    GC周りでトラブルシューティングした際の経験や、Web等で調べたことをまとめてみる。 前提 ・JVMは、Sun Javaを想定。(他は使ったことないです。。。) ・Sun Java 1.5-1.6を想定。 目標 マイナーGC、Full GCそれぞれが頻発することなく、かつそれぞれの実行時間を1秒未満に抑えること。 マイナーGCは1秒未満どころではなく、もっと短くなるべき。どれくらいが理想かは?(0.1秒未満ぐらいを目指したい?) 連続した負荷状態(想定されるピークアクセス)でもOutOfMemoryErrorが発生しないこと。 理想的な状態は、上記に加えて、Full GCの発生が低頻度であること。 具体的には、できるだけマイナーGCで短命オブジェクト(1回使ったらもう使わないようなオブジェクト。逆にセッションオブジェクト等は長命オブジェクトとなる)を破棄させて、短命オブジェクトが、Tenu

    Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か
  • 1