タグ

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

タグの絞り込みを解除

メモリに関するikeike443のブックマーク (5)

  • 「メモリーを意識してみよう」第3回 ヒープのチューニング

    Java2Demoの起動が確認できたら,jconsoleを起動してみましょう。 先々週と同様に,jconsoleの「メモリ」タブで各領域の使用状況を参照できます。 左上のコンボボックスにはデフォルトで「ヒープメモリの使用状況」が選択されています。このコンボボックスを展開するとEden,Survivor,Tenuredなどが並んでいます(図1)。Perm Genなどの項目はヒープではない非ヒープ領域に属している領域です。 Survivor領域は実際には二つありますが,常にどちらかは空なので,一つにまとめて扱われているようです。 この中から,Eden領域を選択してみましょう。 Eden領域の使用量は,だいたい0から1MB程度の範囲に収まっています(図2)。 左下の詳細の部分を見ると,確定(MemoryUsageのcommitted)が1MB,最大が4MBであることがわかります。 つまり,Ede

    「メモリーを意識してみよう」第3回 ヒープのチューニング
  • OutOfMemoryError が出た時の解決へのアプローチ

    java.lang.OutOfMemoryError は、Java VM がヒープメモリ不足により、オブジェクトに メモリを割り当てることが出来ず発生するエラーです。 Java VM 起動時にヒープメモリサイズを指定しますが、指定したヒープメモリサイズを使いきって しまったときに発生します。 OutOfMemoryErrorが発生した場合のアプローチとJava VMパラメータチューニングによる安定動作の運用事例についてご紹介 します。 (1)OutOfMemoryError が出た時のアプローチ OutOfMemoryError はメモリの使用量がヒープメモリサイ ズの指定を超えると発生します。 OutOfMemoryError に陥るケースは二つあります。 (A) 不要なオブジェクトが無駄にメモリに残っている場合 (B) ヒープサイズの絶対量が不足している場合 以下にそれぞれの対処を記し

  • 第1部第4回 仮想メモリー管理機能を改善する

    メモリーへのデータ入出力速度はプログラムの実行性能に大きく影響する。Linuxでは,物理メモリー(主メモリー)とハード・ディスク内のスワップ領域を加えた記憶領域を仮想メモリーとして管理する。この仮想メモリーの取り扱いを変更することでもシステムの処理性能を向上できる。具体的には,キャッシュの書き出し頻度の調整や,仮想メモリー管理機構そのものの変更などがある。また,少ないメモリーでソフトを動作させるために,空き領域の確認を行わずにメモリーを割り当てる方法も紹介する(別掲記事の「少ないメモリーでソフトを動かす」を参照)。 キャッシュの書き出し頻度を変更,ファイルの読み書きを高速化する Linuxではファイル入出力を高速化するため,空きメモリー領域をディスク・キャッシュとして確保し,それを通じて入出力処理を行っている。キャッシュによって,メモリーよりも低速なディスク入出力処理の完了を待つことなく処

    第1部第4回 仮想メモリー管理機能を改善する
  • Java 仮想マシン (JVM) のチューニング

    JVM のヒープ サイズとガベージ コレクション ガベージ コレクションは、Java ヒープ内の使用されていない Java オブジェクトを解放する JVM のプロセスです。Java ヒープは Java プログラムのオブジェクトが存在している場所であり、ライブ オブジェクト、デッド オブジェクト、およびフリー メモリのリポジトリです。実行中のプログラムでどのポインタからもアクセスされなくなると、オブジェクトは「ガベージ (廃棄物)」と見なされ、コレクションの対象となります。 JVM ヒープ サイズによって、ガベージ コレクションを行う頻度とその時間が決定されます。ガベージ コレクションの適切な実行頻度はアプリケーションによって異なるので、ガベージ コレクションの実際の時間と頻度を解析して調整する必要があります。大きいヒープ サイズを設定した場合、ガベージ コレクション全体は低速化しますが、実

  • DBサーバ向けLinuxチューニングを考える 〜 メモリオーバーコミット編 : DSAS開発者の部屋

    Cでプログラムを書いていて大量のメモリを確保したくなったとき、大抵は mallocを使うと思いますが、その際には戻り値がNULLかどうかを判断してエラー処理に飛ばすと思います。しかし、Linux のメモリ管理サブシステムには「メモリ・オーバーコミット」という機構があり、実装されているメモリ以上の領域を確保できてしまいます。 #include <stdio.h> #include <stdlib.h> int main() { int i; char *p; for(i=0;i<65536;i++){ p = (char *)malloc(65536); if(0 == (long)p){ break; } } printf("SIZE=%dMB\n",i*65536/1024/1024); return(0); } swapoff したメモリ 1G のマシンでこれを実行するとこんな感じにな

    DBサーバ向けLinuxチューニングを考える 〜 メモリオーバーコミット編 : DSAS開発者の部屋
  • 1