タグ

javaとJVMに関するpick_mugetuのブックマーク (12)

  • HotSpot VMの特性を知る

    Permanent領域のチューニング JVMにはPermanent領域と呼ばれるヒープ領域があります。ここにはクラス定義やメソッド、フィールドなどのメタデータが格納されます。 Permanent領域のデフォルトのサイズは、一般的なアプリケーションにとって十分な大きさに設定されています。しかし、アプリケーションによっては非常に多くのクラスをロードするものもあり、Permanent領域が足りなくなることがあります。例えば、JSPやサーブレットを多用するアプリケーション(アプリケーションサーバなど)は、デフォルトのPermanent領域サイズでは足りなくなり、次のようなエラーが発生することがあります。 $ java ManyClassLoadingTest Permanent generation is full... increase MaxPermSize (current capacity

    HotSpot VMの特性を知る
  • Java8のHotSpotVMからPermanent領域が消えた理由とその影響 | ギークを目指して

    今回も前回の記事につづき、Java8による変更点で未だあまり紹介されていないポイントを記事にしようと思う。 今回はJava8のHotSpotVMの話。Java8ではJEP122が取り込まれ、VMのメモリモデルが変更された。JEP122のタイトル「Remove the Permanent Generation」から想像できるとおり、Java8のHotSpotVMからは従来のPermanent領域が無くなった。 なぜ、こういった変更が行われたのだろうか?また、元々Permanent領域に格納されていた情報は何処にいってしまったのか?JVM付属のツールにどういった影響があるのか? 今回の記事ではこの点をまとめていこうと思う。 なお、HotSpotVMのメモリモデルについて詳しくない方は、先にこちらの項番(「補足 – HotSpotVMのメモリ構造概説)を読んでいただくとスムーズに読み進められるだ

    Java8のHotSpotVMからPermanent領域が消えた理由とその影響 | ギークを目指して
  • JavaVMのメモリ管理に関するまとめ(Javaヒープ、GC、ダンプ等) - ぺーぺーSEのブログ

    ブログはJava8(特にMetaspace)に対応していない。 下記にJava8以降に対応した記事を記載する(予定)。 blog.pepese.com JavaVMのメモリ領域について JavaVMが管理するメモリ領域について 階層1 階層2 階層3 説明 Javaヒープ JavaVM上で起動するJavaプログラムのリソースを管理する領域。New領域とOld領域で構成される。 l" New領域 新規オブジェクトと閾値(-XX:MaxTenuringThreshold)未満のオブジェクトが配置される。(Young領域とも呼ばれる) l l" Eden領域 新規のオブジェクトが配置される。 l l" From領域 CopyGC(ScavengeGC、マイナーGC)が実行された際に、使用中のオブジェクトはここへコピーされる。(S0やS1とも呼ばれる) l lー To領域 CopyGC(Scav

    JavaVMのメモリ管理に関するまとめ(Javaヒープ、GC、ダンプ等) - ぺーぺーSEのブログ
  • JVM のオプション設定で Clojure の起動を 30% 高速化 → さらに高速化で起動時間半減へ - tnoda-clojure

    遅い遅いと言われる Clojure の起動ですが,JVM のオプションを正しく設定すれば少しは速くなります. 以前,TieredCompilation オプションで起動をちょっとだけ高速化. というメモを書いたのですが,このメモで紹介したオプションを,-XX:TieredStopAtLevel=1 と組み合わせることで,Clojure の起動をオプション無しのときと比較して,30% 高速化できました. まずはベースラインから, ~ % /usr/bin/time java -client -cp ~/clojure.jar clojure.main -e nil 1.10 real 1.60 user 0.11 sys 私の環境では 1.1 秒かかっています.次に,-XX:TieredCompilation を追加します. ~ % /usr/bin/time java -XX:+Tiere

    JVM のオプション設定で Clojure の起動を 30% 高速化 → さらに高速化で起動時間半減へ - tnoda-clojure
  • 見せてやろうJVMが持つ真のチカラを! JVMのオプションを一覧する方法について。 - Qiita

    java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions 尚、詳細が知りたい方は、この辺りを眺めるとより具体的に分かります。 src/share/vm/runtime/globals.hpp#l481 コマンドの説明 -XX:+PrintFlagsFinal -XXオプションの一覧を標準出力するオプションです。 -XX:+UnlockDiagnosticVMOptions 仮想マシンをチューニングする為のオプションを使えるようにするオプションです。 以下に示すリストでは {diagnostic}となっているものがこのフラグによって変更できるようになります。 -XX:+UnlockExperimentalVMOptions 将来サポート予定であるものの機能性が不安定なオプ

    見せてやろうJVMが持つ真のチカラを! JVMのオプションを一覧する方法について。 - Qiita
  • Tuner が Linux 64 ビット JVM に -d64 オプションを必要とする (6797035) (Sun GlassFish Enterprise Manager Performance Advisor 1.0 リリースノート)

  • JVMのヒープを使い切っていないのにOutOfMemoryErrorが出る場合

    主としてオラクル社のBPM (Business Process Management) の技術ネタについて紹介してきます。その他、一般的なトピックについてもご紹介していきます。なお、このエントリは個人の見解であり、所属する会社の公式見解ではありません。 Oracle BPM Suiteを使い際にはJVMのヒープサイズを大きくする必要があるのですが、Windows 2008  R2環境、メモリ16GB搭載のマシンでヒープサイズを2GBに設定したら、物理メモリの空きは10GB以上、ヒープサイズも使い尽くしていないのに、OutOfMemoryErrorが発生する現象にあたりました。 JRockitのMission ControlやFright Recorderで解析してみたのですが、よくわからず。。 どうも、DocId:1386938.1で公開されている現象にあたったようです。 https://

    JVMのヒープを使い切っていないのにOutOfMemoryErrorが出る場合
  • GCオプション備忘録 - Qiita

    チューニングのベースになるGCオプションの備忘録。 JDK6以上が対象で、デフォルトで設定されているものも明示的に指定。 動作設定 -server -d64 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=70 -XX:+DisableExplicitGC -XX:+UseCompressedOops -XX:+OptimizeStringConcat -XX:-UseGCOverheadLimit 64bitのサーバモードで起動。 コンカレントGCを使用。 サーバモードなのでCMSIncrementalModeは指定しない方がいい。 G1GCでもいいが、世代別GCの方

    GCオプション備忘録 - Qiita
  • JVMのGCのログを-XX:+PrintGCDateStampsでhuman readableにする - oinume journal

    English version JVMでGCのログ出すじゃないですか。んで、その時↓みたいに -XX:+PrintGCTimeStamps っていうオプションを指定するじゃないですか。 TODAY=`date "+%Y%m%d-%H%M%S"` JAVA_OPTS="-server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=256m -XX:MaxPermSize=256m \ -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC \ -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=32 -XX:TargetSurvivorRatio=85 \ -verbose:gc -Xloggc:/usr/local/tomcat/lo

    JVMのGCのログを-XX:+PrintGCDateStampsでhuman readableにする - oinume journal
  • JVM〜メモリ管理〜 - メモ帳@wiki

    メモ帳@wiki 日頃の学習メモ。 トップページページ一覧メンバー編集 JVM〜メモリ管理〜 最終更新: dehio3 2009年02月04日(水) 12:47:32履歴 Tweet GC(garbage collection;ガベージコレクション) プログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能。 直訳すれば「ゴミ収集」。 コストがかかる処理。一旦始まるとCPUを長時間占有する。 起きるタイミングや占有時間の事前予測が困難なため、リアルタイムシステムには向いていない。 ガベージ・コレクションの種類 Scavenge GCNEW領域のみを対象とした短時間で終了するガベージ・コレクション頻繁に実施Full GCNEWとOLD両方の領域を対象とした大がかりなガベージ・コレクション比較的低い頻度で実施 例)JVMのオブジェクトサイズがGC前は66MB→GC後は

    JVM〜メモリ管理〜 - メモ帳@wiki
  • JVMのオススメ起動オプション - oinume journal

    なんか秘伝のタレみたいになってきたので後世のために共有。 前提 Webアプリケーションを想定 TomcatなりJettyなりがListenするポートは外部からはアクセスできない ※-Xms -Xmx -Xmn あたりは搭載しているメモリ容量によって変える、-XX:MaxPermSize -XX:PermSizeは384mあれば十分だと思うけどロードするクラスの数次第なので要調整。 NOW=`date "+%Y%m%d-%H%M%S"` JAVA_OPTS="-server -Xms2g -Xmx2g -Xmn1g -XX:MaxPermSize=384m -XX:PermSize=384m \ -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=85 -XX:MaxTenuringThreshold=32 \ Javaプログラマーなら習得しておきたい J

    JVMのオススメ起動オプション - oinume journal
  • JVMのチューニング - ITエンジニアとして生きる

    前回、JVMとGCのしくみ - ITエンジニアとして生きるでJVMとGCのしくみについて書いた。 今回はその続きということでJVMのチューニングについて書きたいと思う。 JVMチューニングって -Xms ・・・ ヒープ全体(New領域+Old領域)の初期値 -Xmx ・・・ ヒープ全体(New領域+Old領域)の最大値 くらいしか話題に上がらないし意識しないことが多い(気がする)。 でもホントはこれだけではダメで、前回のようにPermanent領域、New領域、Old領域を意識したチューニングが必要になる。 VMチューニングを考えるその前に・・・チューニングの話をする前にまずVMの起動モードについて話したいと思う。 VMには大きく以下2つの起動モードがあり、それぞれ以下のような特徴を持つ。 ◆クライアントVMモード 起動時間を短縮し、メモリサイズを縮小するように調整されている。 VM起動時

    JVMのチューニング - ITエンジニアとして生きる
  • 1