タグ

関連タグで絞り込む (234)

タグの絞り込みを解除

javaに関するkarahiyoのブックマーク (87)

  • TomcatでFullGC多発の原因調査 - Yuji Blog

    Tumblrからの移行記事2 Tomcatで動かしてるアプリケーションに負荷をかけるとFullGCが発生し、それ以降はFullGCが多発する現象が発生しました。 ここではその際の調査に使用した方法を簡単にまとめておきます。 ちなみにTomcatはWindows環境でEclipseから実行してます。 1.ヒープ統計情報の確認 Tomcatの起動オプションに -verbose:gc(-Xloggc:path_to_file) -XX:+PrintClassHistogram を追加。 その後Unix環境なら kill -3 <pid> でcatalina.outに統計情報が出力され、 Windows(Unixも)では %JAVA_HOME%/bin/jmap -histo <pid> でコンソールに出力されます。 Windowsの場合はタスクマネージャのプロセスタブで表示列を追加すればPIDを

    TomcatでFullGC多発の原因調査 - Yuji Blog
  • JVMオプション | Java | 技術メモ | TOYATAKU WEB

    GCの種類と方式について [2013-08-23] GCとメモリ情報の出力 [2013-07-10] HotSpot関連 [2013-01-31] チューニング(性能改善)関連 [2016-07-14] new GC overhead limit exceeded [2013-01-31] -XXオプションについて、有効は「+」、無効は「-」と指定する。 自分がどのVMで起動しているか確認する場合は「java -version」コマンド。 Java VMのデフォルト値はJava HotSpot VM Optionsを参考に。 また、JVM は「クライアントVM」か「サーバVM」かを実行時に指定できる。 上記は指定しなかった場合、OSによってデフォルト値が異なるので、デフォルト値がどうなっているかは以下を参照する。 ・サーバークラスマシンの検出 GCの種類と方式について JVMでは、「Sca

  • 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のブログ
  • だいありー

    IIJ mio の音声 SIM が届いたので、iPhone SE のセットアップ。 13時ごろ、MNP の手続きを追えたんだけど、22時現在、まだ手続きが終了していないっぽい...。 と思って softbank 携帯で電話したら、つながらなかった(圏外になった)ので、おわったっぽいが、なぜ IIJ mio のほうは圏外のままなのか。 IIJ mio のサイトからプロファイルをダウンロードして、無署名の警告をものともせずにインストールし、再起動したら docomo 回線を拾ってくれた。 Pony で Actor の GC がどうのってのがあって、ぴんとこなかったんだけど、やっとわかった。 Elixir(多分 Erlang も)の場合、こんな感じで、誰からも参照されない Process を沢山作って、永遠に待つような例が書ける。誰も参照していないので、その Process にメッセージが届くこ

  • G1GCのチューニング

    注※1 -Xmsと-Xmxの値は同じ値を指定することを推奨します。 注※2 3~5のオプションを指定した場合,New領域のリサイズが制限され,目標停止時間内にGC停止時間を抑えようとするG1GCのメリットを損なうため,G1GCでは指定しないことを推奨します。また,3~5のオプションを指定しなかった場合,New領域の初期サイズはJavaヒープの初期サイズ×0.2のサイズが確保され,Eden領域の初期サイズはSurvivorRatioのデフォルト値である8に従って割り当てられます。 注※3 Survivor領域のサイズとはTo空間またはFrom空間のサイズを指します。To空間とFrom空間の合計サイズでないことに注意してください。 注※4 -XX:MetaspaceSizeと-XX:MaxMetaspaceSizeの値は同じ値を指定することを推奨します。 図7-32 Javaヒープ領域内の各領

    G1GCのチューニング
  • FullGC

  • G1GCで実行されるGC

  • 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
  • TomcatのGCの発生頻度の調査手順のまとめ

    TomcatのPIDを調べ、jstat コマンドを実行すればOK TomcatのPIDの調査 まずはプロセスIDを調べます。 $ su - tomcat $ jsp -v または $ sudo -u tomcat jps -v tomcatユーザの起動したJavaプロセスのIDを付加情報付きで表示します。 javaプロセスがひとつしかない場合などは、下記のコマンドを実行します。 $ pgrep -lf java jstat コマンドでGCの統計情報を見る jstat コマンドの -gcutil オプションで見ることができます。 PIDが54321だった場合、5秒ごとにgcの発生状況をチェックするコマンドの例。 $ jstat -gcutil -t 54321 5000 実行するコマンドの意味は以下の通り。 jstat <出力オプション> <プロセスID> <データ取得間隔(ms)> -gc

    TomcatのGCの発生頻度の調査手順のまとめ
  • jstat - Java 仮想マシン統計データ監視ツール

    形式 パラメータ 説明 仮想マシン識別子 オプション - 一般的なオプション - 出力オプション 例 関連項目 形式 jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ] パラメータ generalOption 単独で使用する一般的なコマンド行オプションです (-help、-options、または -version)。 outputOptions 単一の statOption と、-t、-h、および -J オプションのいずれかを組み合わせた、1 つまたは複数の出力オプションです。 vmid ターゲットの Java 仮想マシン (JVM) を示す文字列である仮想マシン識別子です。一般的な構文は次のようになります。 [protocol:][//]lvmid[@hostname[:port]/servernam

  • Javaヒープ領域の使用量と容量をコマンドラインから取得する #java - nori3tsu's blog

    JDKに標準で入っているjstatコマンドを使います。jstatコマンドではJavaヒープ領域中のNew領域・Old領域・Permanent領域の使用量・容量・最小容量・最大容量などを取得することができます。 ※ 2015/06/24追記: こちらはJava7までのヒープ領域についての記事です。Java8はPermanent領域がないなどの違いがあるため、別途Java8のjstat公式ページを参照してください。 Javaヒープについて Javaヒープ領域を指定するJVMオプションは-Xms,-Xmxです。このオプションで指定しているJavaヒープ領域のサイズはNew領域とOld領域を合算したものとなり、Permanent領域は含まれていません。また、New領域はSurvivor領域0(From)+Survivor領域1(To)+Eden領域の合算です。 取得方法 -gcオプションでJava

    Javaヒープ領域の使用量と容量をコマンドラインから取得する #java - nori3tsu's blog
  • 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.
  • Getting Started with the G1 Garbage Collectorの日本語訳

    書は次の英文資料を日語訳したものです。 l  「Getting Started with the G1 Garbage Collector」 不備や質問がありましたら、訳者にご連絡いただければ幸いです。 2013/03/16 湊  隆行 turbo[at]minato.tv Overview | 概要 Purpose | 目的 このチュートリアルでは、G1 ガーベジコレクタの基的な使用方法と、Hotspot JVMにおけるG1ガーベジコレクタの使われ方を説明します。またG1 ガーベジコレクタの内部機能、コマンドラインオプション、および、ログに関するオプションについて説明します。 Time to Complete | 完読時間 およそ1時間。 Introduction | はじめに このOBE (Oracle by Example)では、Java仮想マシン(JVM)および G1 ガーベ

    Getting Started with the G1 Garbage Collectorの日本語訳
  • Java VMのガーベジコレクションの整理 - Qiita

    Java VMのGC Java VMには様々な種類のGC(ガーベジコレクション)があり、用語を整理しないと混乱します。 GCの種類を整理する前に、まずJava VMのGCは「世代別GC方式」を採っていることを意識しましょう。 Java 7で正式サポートが始まったG1 GCも、世代別GC方式がベースになっています。 「世代別GC方式」の詳細は、様々なWebサイトで紹介されているので、ここではポイントだけを記述します。 世代別GC方式とは Java VMはJavaヒープを、 「New領域(1個)」「Tenured領域(1個)」と「Permanent領域(1個)」に分割し、 さらに「New領域」を「Eden領域(1個)」と「Survivor領域(2個)」に分割します。 生成されたオブジェクトはまずEden領域に入り、最初の数回の「コピーGC」によって2個のSurvivor領域の間を行き来します。

    Java VMのガーベジコレクションの整理 - Qiita
  • Java 7 CMS GCの基本的な情報の整理 - nekop's blog

    バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve

    Java 7 CMS GCの基本的な情報の整理 - nekop's blog
  • まじめにJVMチューニング: 第1回 まずは現状確認

    まじめにJVMチューニングに取り組む機会があったので、忘れないようにこの記事を書きました。 GCアルゴリズムやパラメータの説明はいろいろなサイトに掲載されていたのですが、 「どうやって取り組むか」「何を見れば良いか」は意外とまとまっていなかったので。 JavaScala製のアプリケーションはもちろんのこと、 Solr, ZooKeeper, Cassandra, Neo4J等jvm上で動くプロダクトを使う場合つねに 「JVMパラメータをどう設定するか」 という課題があります。 最近のミドルウェアでは、インストール時に最適なオプションを渡して javaを実行するようなシェルをつくるrpmを提供していたりしますが。 さて、今回私が取り組んだのはフルGC対策のためのチューニングです。 フルGCとは何かというと、 別名「Stop the World」と呼ばれ、全てのアプリケーション・スレッドを停

  • G1ガベージコレクタの威力を検証してみた - しんさんの出張所 はてなブログ編

    いよいよおまちかね!GF決勝大会レディーゴ(ry GFは世界の覇権をかけたガベージコレクト・ファイトの略だろJK …少しGガンダムに毒されてしまったようだ… ガベージコレクションの性能を検証したのをあげたのはJ2SE 5.0が出た直後あたりが最後だったっけ。もう5年近く前か。 http://shin.cside.com/diary/2004/10.htm#1 JavaSE 6 update14にてG1ガベージコレクタが入ったようなのでこれを試してみる。 ベンチに使うのはいつもどおりの自作STG。 GCのログも全部掲載してるので長文です。 インクリメンタルガベージコレクタ まず一番最適化してるインクリメンタルGCでの設定。なおインクリメンタルGCは5.0のときに実装がまるごとコンカレントGCにさしかえられているのでコンカレントGCを使っているという認識でOK。単に長いオプション名を暗記してい

    G1ガベージコレクタの威力を検証してみた - しんさんの出張所 はてなブログ編
  • G1GCのログの読み方 - unnamed

    この記事は Java Advent Calendar 2012 の3日目です! 前の日は @btnrouge さんの「HotSpotの変遷からみたJava SE 7の考察」でした。次の日は @making さんです! G1GCのログ G1GC (Garbage First Garbage Collection) が JDK 7u4 から正式に導入されました。この新しいGCの詳細は、幸いなことに @nari3 さんが日語でG1GCを執筆されており、これを読むことで殆どを把握することができます。やったね!ちなみに英語の論文等で読もうとすると、例えばこうなります。 学習の高速道路は整っていますが、更に理解の掘り下げやチューニングのために、実際に動かしながらログを読もうとすると、今までの形式とはすっかり変わってしまっているのでその読みにくさに絶望します。そのため、ここではログの出力がそれぞれど

    G1GCのログの読み方 - unnamed
  • G1GCのつかいどころメモ - nekop's blog

    以下の環境とテストでCMSとG1GCを比較してみた。かなり急ぎでやったので間違っている可能性が多少ある。 16 cores, 32GB mem -Xms24g -Xmx24g 8 instances Infinispan 6.0.3.Final DIST cache, put 4GB data (1KB entry * 2M, 2GB data with one backup copy, 2GB * 2 = 4GB) CMS: -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=30 G1GC: -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:InitiatingHeapOccupancyPercent=30 $ java -XX:+UseG1GC -XX:+PrintFlagsFinal

    G1GCのつかいどころメモ - nekop's blog
  • [メモ]CMS GCログの見方 - Akira's Tech Notes

    package test.example; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; @WebService @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) public class HelloWorld { @WebMethod(action = "sayHello") public String sayHello(@WebParam(name = "name" ) String