タグ

javaとJVMに関するkiyo_hikoのブックマーク (23)

  • 知らないなんてもったいない! 障害発生の原因を洗い出すOSSのJavaVM解析支援ツール「HeapStats」を使ってみよう

    避けるべき状況ですが、残念なことにこのようなことは珍しくありません。解析に必要な情報を漏らさず取得するためには、サービス開始前に入念な準備が必要ですが、現実にはそこまで時間をかけられない場合もあり、往々にして準備不足となる場合があるからです。 こういった不幸な状況を防ぐ手段の1つとして、稿では「HeapStats」というツールを利用した障害解析方法を紹介します。 HeapStatsとは 「HeapStats」は、NTT OSSセンタが開発を行い2013年にOSS(オープンソースソフトウェア)として公開したJavaVM障害解析支援ツールです。 Javaアプリケーションにおけるメモリ不足(OutOfMemoryError)やデッドロックといった障害を素早く解決することを目的として開発されました。特に、Javaヒープメモリ内の状態など、従来は高い負荷をかけて取得する必要があった情報を、低オーバ

    知らないなんてもったいない! 障害発生の原因を洗い出すOSSのJavaVM解析支援ツール「HeapStats」を使ってみよう
  • 診断ガイド 目次

    診断ガイド 目次 パート 1 Oracle JRockit JDK の概要 Oracle JRockit JDK について JRockit JVM とは JDK について JRockit JDK バージョン JRockit JDK がサポートするプラットフォーム 互換性情報 JRockit JDK インストールの内容 開発ツール デモ C ヘッダ ファイル Java Runtime Environment (JRE) Java 仮想マシン (JVM) Java SE JRE の標準機能 JRE クラス ファイルに関する注記 追加のライブラリ サンプル Attach API のサポート Oracle JRockit のドキュメント JRockit JVM のコマンドライン オプション JRockit JDK および JRockit Mission Control へのサポート JIT コンパ

    kiyo_hiko
    kiyo_hiko 2014/06/09
    Oracle JRockit JDK について
  • Javaはどのように動くのか~図解でわかるJVMの仕組み 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    Javaはどのように動くのか~図解でわかるJVMの仕組み 記事一覧 | gihyo.jp
  • 用語は正しく覚えよう: システムクラスローダとブートストラップクラスローダ - masugata_kの日記

    ディスカッションの最中、どうも話がかみ合わないと思ったら用語の使い方が間違っていた、ということが時々ある。同じ概念を違う用語で呼んでいる場合はすぐに気づくので問題ない*1が、同じ用語で違う概念を指していると混乱の元凶になる。なので、ちょっと面倒ではあるが、正しい用語を1次情報に当たって確認するクセを付けてほしい。 とまあ偉そうなことを書いたが、僕自身、用語を間違って覚えていて相手を混乱させてしまった経験は枚挙に暇がない。今回もまた1つそんなことがあったので、備忘のためにここに書いておく。 間違って覚えていた用語は「システムクラスローダ (system class loader)」。java.lang.ClassLoader#getSystemClassLoader() で取得できるクラスローダのことだが、実は、JVM が内部的に持っているクラスローディング機構((JVM には、ClassL

    用語は正しく覚えよう: システムクラスローダとブートストラップクラスローダ - masugata_kの日記
    kiyo_hiko
    kiyo_hiko 2013/10/28
    わからなくなったらJava 仮想マシン仕様などの一次情報にあたろうという話。
  • Javaバイトコード入門

    constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ

    Javaバイトコード入門
    kiyo_hiko
    kiyo_hiko 2013/10/21
    読んだ。 一応…
  • Javaガベージコレクションのエッセンス

    あるアプリケーションの作業にとって、スループットは最も重要なターゲットです。1つ例を挙げると、長時間実行されるバッチ処理のジョブです。ガベージコレクションが実行されている間、バッチジョブが時々1、2秒止まっても、ジョブ全体がすぐに完了すれば問題ありません。 人間が直接対話するアプリケーションから金融取引システムまで、実質的な他のすべての作業では、システムが1、2秒か、数ミリ秒以上反応しない場合、大変なことになり得ます。金融取引では、しばしば一貫した停止時間と引き換えに、スループットを犠牲にするだけの価値はあります。物理的に利用可能なメモリ量によって制限されるアプリケーションを持ったり、footprintを維持しなければならなかったりすることもあります。そのような場合、停止時間とスループットの面の両方で、パフォーマンスをあきらめなければなりません。 以下のトレードオフは度々起こります。 大部

    Javaガベージコレクションのエッセンス
    kiyo_hiko
    kiyo_hiko 2013/08/30
    メジャーコレクションのコレクターのあたりで挫折した もっと勉強しなくちゃ またいつか
  • 連載: 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 を利用したアプリ連携の実現 #鬼わか 解説(前編)
    kiyo_hiko
    kiyo_hiko 2013/08/16
    HotSpotVMの導入はJava1.2から。単発の小さいオブジェクトの宣言に神経質になる必要はない // エスケープ解析という技もあり、オブジェクトは速攻で消される // 陽にnullを代入するとオブジェクト浮遊を引き起こすことがある
  • 第8回 イレギュラーなヒープの動作を理解する | gihyo.jp

    Tenured領域を早く使ってしまうパターン 前回ご紹介したように、HotSpotのヒープでは、アプリケーションがオブジェクトを作成するとまずはじめにEden領域が割り当てられ、マイナーGCによってSuvivor領域、Tenured領域へと移動していく流れが一般的でした。 しかし、このパターンではないイレギュラーなパターンがいくつか存在します。 その1つが、「⁠オブジェクトが一般的なパターンに比べ、早くTenured領域に移動してしまう」というものです。 図1 Tenured領域を早く使ってしまう例 Tenured領域はメジャーGCの対象であり、メジャーGCはNew領域を対象とするマイナーGCに比べ、はるかに停止時間が長くなります。そのため、このようなパターンが頻繁に起こる場合は、メジャーGCの多発によってアプリケーションの停止時間が増加します。 図2 Tenured領域を早く使ってしまう

    第8回 イレギュラーなヒープの動作を理解する | gihyo.jp
    kiyo_hiko
    kiyo_hiko 2013/08/14
    Edenに入らないオブジェクトができた場合、それはいきなりTenuredに入る (SURVIVORは常にEdenより小さい、Edenに入らないからってOOMEで落とすよりは待ってでも実行続ける発想らしい) 短中期のオブジェクトが多い場合newを増やす
  • Javaのパフォーマンスについての9つの誤信

    JVMはプロファイリングを利用してコードの最適化を行います。対象は頻繁に利用されるコードパスのみですが,徹底的に行うことで大きな効果を上げています。JITコンパイルされたコードに関しては,現在では多くの場面において (その割合も増えつつあります) C++の実行速度を凌駕しています。 このような事実にも関わらずJavaが今でも低速なプラットフォームとして認識されているのは,おそらくは初期バージョンのJavaプラットフォームでの経験が,歴史的な負のバイアスとして働いているためでしょう。 早まった結論を出す前に,客観的な見地に立って,最新のパフォーマンス結果を評価するようにお勧めします。 2. Java コードの1行にはそれ自体で意味がある 次の短いコード行を考えてみてください: MyObject obj = new MyObject(); Java開発者ならば誰でも分かるように,このコードはオ

    Javaのパフォーマンスについての9つの誤信
  • オンラインマニュアル ページ移転のお知らせ:ミドルウェア:ソフトウェア:日立

    日立オープンミドルウェアは、お客様の既存の財産を生かしながら、高い信頼性と柔軟性、自律性を備えたITシステムの実現を支えています。

  • JRuby - Wikipedia

    JRuby は、RubyインタプリタのJavaによる実装である。フリーソフトウェアであり、CPL/GPL/LGPL の3つのライセンスを採用している。JRuby はJavaと密に連携しており、インタプリタを任意のJavaアプリケーションに埋め込むことができ、JavaRubyのコード間で双方向のアクセスを可能にしている。 JRuby の主な開発者は Charles Nutter[1]、Thomas Enebo[2]、Ola Bini[3]、Nick Sieger[4] である。2006年9月、サン・マイクロシステムズは Enebo と Nutter を雇用し、仕事として JRuby の開発をさせている[2]。2007年6月、ThoughtWorks は Ola Bini を雇用し、RubyJRuby に関する仕事をさせている[3]。 2009年7月、JRubyの開発者らはサンを離れ、

    JRuby - Wikipedia
  • Javaオブジェクトのメモリ使用量

    Javaオブジェクトのメモリ使用量を計測してみました。 計測を行ったJDKはWindowsの1.4.2_04です。 基的に、Javaではプリミティブ型以外の全オブジェクトを生成するときに new演算子を使用します。 つまり、メモリ確保が行われるタイミングはnew演算子が実行される時に限られます。 全てのオブジェクト フイールド数0 フィールドが一つも無いオブジェクトを生成すると、8byteのメモリを消費します。 Object obj = new Object(); フイールド数1以上 フィールドが一つ以上あるオブジェクトを生成すると、8+α byteのメモリを消費します。 α の値は、このクラスが保持するフィールドに依存します。 フィールドの型により、消費するbyte数が異なります。 byte / boolean 1byteを消費します。 short 2byteを消費します。 int /

  • こんなやり方が…プラグインなしでWebブラウザ上でJavaを実行する·DoppioVM MOONGIFT

    DoppioVMはCoffeeScriptで作られたJavaVMです。Webブラウザ上でJavaコードをコンパイルしたり実行できます。 Webブラウザ上で実行できるJavaと言えばアプレットになりますがプラグインが嫌われる現在、あまり実行される機会も多くありません。そこでJavaScript上で動作するJavaVM、DoppioVMが開発されました。 Webブラウザ上にコンソールが表示されています。 javacもあります。 実際にコンパイルして実行もさせられます。 DoppioVMはCoffeeScriptで書かれたJavaVMとなっています。そのためJavaプラグインなしでWeb上でJavaを実行できます。コンパイルして中間コードも生成されるので、かなり格的と言えるでしょう。String、Pattern、HashMapなどがサポートされており、全てのJavaのコードが実行できる訳ではあ

    こんなやり方が…プラグインなしでWebブラウザ上でJavaを実行する·DoppioVM MOONGIFT
  • Java コードから Java ヒープまで

    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.

    Java コードから Java ヒープまで
    kiyo_hiko
    kiyo_hiko 2012/04/15
    まだこのレベルの理解までJVMのメモリーの扱いについては勉強してないので、いつか読む。
  • Javaのクラスとオブジェクトについて再度解説を試みる - 達人プログラマーを目指して

    オブジェクト指向プログラミングの考え方については、今までこのブログでも何度か取り上げてきました。 [オブジェクト指向] - 達人プログラマーを目指して オブジェクト指向プログラミングはプログラミング技法のすべてではないとはいえ、Javaのようなオブジェクト指向言語で格的なプログラムを作るには理解を避けて通ることができませんし、また、関数型言語など他のパラダイムの言語を利用するにしても、オブジェクト指向の考え方をまったく理解しないまま使いこなすということは困難でしょう。オブジェクト指向の考え方はデータ構造やアルゴリズムといったことと同様に、プロフェッショナルなプログラマーが理解しておくべき基的な素養といってもよいと思います。実際、海外では募集要項でオブジェクト指向の理解を前提とすると書かれていることが普通ですし、プログラマーの面接試験で、アルゴリズムと並んでオブジェクト指向プログラミング

    Javaのクラスとオブジェクトについて再度解説を試みる - 達人プログラマーを目指して
    kiyo_hiko
    kiyo_hiko 2011/12/18
    巷のSIとか受託レベルだとちょっと敷居が高い様な気がしますが、参照変数の理解が非常に重要なのは同意。無理やり犬に例えるなら、参照変数は首輪ひもの持ち手のわっかで、代入は同じ首輪(犬)に紐をつなぐ、的な
  • Webシステムのボトルネック回避(3)

    図7●スレッド数と接続数がパラメータ・チューニングの中心<BR>Webシステムを構成する3層それぞれのクライアント・サーバー接続のコネクション数をパラメータで制御することで,個々のWebアプリケーションに適したチューニングを施す。Webサーバーはクライアントの同時接続数,APサーバーはJavaVMの数とスレッド数,あらかじめ張っておいて使いまわすDBアクセス用コネクションの数,DBサーバーはDBアクセスを受け付ける同時接続数を適切な数にする。フロントエンドのWebサーバーからバックエンドのDBサーバーに向かうにつれて同時に接続可能なスレッドを減らすケースが多い 図8●JavaVMのヒープ領域のサイズでガベージ・コレクション(GC)の頻度と時間を制御する<BR>JavaVMは,Eden,Survivor,Oldの3つの世代でオブジェクトを世代管理することで,ガベージ・コレクション(GC)にか

    Webシステムのボトルネック回避(3)
    kiyo_hiko
    kiyo_hiko 2011/10/31
    「GCの効率を上げるためには,アプリケーションの開発時にも,オブジェクトのサイズを小さく収める工夫が必要」…なるほど
  • Site Cooler NZ | Points to Note When Shopping for a Washing Machine

    Points to Note When Shopping for a Washing Machine There are different washing machines brands in New Zealand. When shopping, therefore, you need to ensure that first, you get a quality machine; a machine that will last through many years without breaking down. You check product warranties and reviews when shopping to ensure a machine is a good quality. The material of the drum can be enamel, plas

    kiyo_hiko
    kiyo_hiko 2011/10/21
    Javaも少しやるからにはJVMのメモリー管理とかガーベジコレクションを多少なりとも理解しておきたい。
  • Hotspot VMの基本構造を理解する

    J2EEがミッションクリティカルな分野に適用されるようになり、Javaのパフォーマンスチューニングの重要性はさらに高まっています。パフォーマンスチューニングにはさまざまなパラメータがありますが、中でもJava VMに関連するチューニングの効果は大きいといわれています。稿は、Java VMに関連するチューニング手法を学ぶための前提知識を提供することを目的にしています(編集部)。 Java VMに関連するチューニングを行い、J2EEアプリケーションのパフォーマンスを上げるためには、Java VMについて詳しく知る必要があります。稿は2回に渡ってJava VMの基構造と動作原理を詳細に解説しますが、内容を理解するためにはプログラムがコンピュータ上で動作する基原理とJava VMの基用語を知っている必要があります。Java VMの基用語に関しては、「実行スピードに挑戦するJavaアーキ

    Hotspot VMの基本構造を理解する
  • Amazon.co.jp: Java: The Good Parts: Jim Waldo (著), 笹井崇司 (翻訳), 矢野勉 (監訳): 本

    Amazon.co.jp: Java: The Good Parts: Jim Waldo (著), 笹井崇司 (翻訳), 矢野勉 (監訳): 本
  • 「メモリーを意識してみよう」第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