Skip to Content
Javaパフォーマンス
book

Javaパフォーマンス

by Scott Oaks, Acroquest Technology株式会社, 寺田 佳央, 牧野 聡
April 2015
Intermediate to advanced
448 pages
6h 47m
Japanese
O'Reilly Japan, Inc.
Content preview from Javaパフォーマンス

8章ネイティブメモリのベストプラクティス

Javaアプリケーションが利用するメモリの中で、最も消費量が多いのはヒープです。しかし、JVMはネイティブメモリについてもかなりの量の割り当てと利用を行っています。7章では、プログラムの側から見た場合のヒープに対する効率的な管理について議論しました。一方、ヒープを適切に設定しオペレーティングシステム上のネイティブメモリとの間のインタラクションを管理するというのも、アプリケーションのパフォーマンスに大きな影響を与えます。

この章では、ネイティブメモリ(あるいはオペレーティングシステム上のメモリ)について上記のような側面を明らかにします。まずはJVMによるメモリの使用の全体像を示し、使用状況を監視してパフォーマンス上の問題点を探せるようにします。続いて、JVMとオペレーティングシステムのチューニングを通じてメモリの最適な使用を図ります。

8.1 合計メモリ使用量

ヒープは通常、JVMが使用するメモリの中で最も多くの部分を占めています。一方、JVMが内部処理のために使用しているメモリもあり、これがネイティブメモリと呼ばれます。JNIのmalloc()などのメソッドや、NIOではアプリケーションがネイティブメモリの割り当てを行うこともできます。ネイティブメモリとヒープの使用量を足したものが、アプリケーションの合計メモリ使用量(フットプリントとも呼ばれます)になります。

オペレーティングシステムの観点からは、この合計メモリ使用量がパフォーマンスにとって大きな意味を持ちます。物理メモリの空き容量が合計メモリ使用量に満たない場合、パフォーマンスが低下する可能性があります。必ずパフォーマンスが低下するというわけではなく、ネイティブメモリの中には起動時にしか使われないものもあります(クラスパスに含まれるJARファイルを読み込む際に割り当てられるメモリなど)。このようなメモリについては、スワップされても気にする必要はありません。また、ネイティブメモリの一部はシステム上の他のJavaプロセスと共有されます。Java以外のプロセスと共有されるネイティブメモリも少しですがあります。しかし多くの場合、よりよいパフォーマンスのためには合計メモリ使用量(と他のアプリケーションのための余裕)がマシン上の物理メモリの容量を超えないようにするべきです。 ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

パフォーマンス向上のためのデザイン設計

パフォーマンス向上のためのデザイン設計

Lara Callender Hogan, 西脇 靖紘, 星野 靖子
初めてのSQL 第3版

初めてのSQL 第3版

Alan Beaulieu, 株式会社クイープ
プログラミングC# 第8版

プログラミングC# 第8版

Ian Griffiths, 木下 哲也, 鈴木 幸敏
Python機械学習クックブック

Python機械学習クックブック

Chris Albon, 中田 秀基

Publisher Resources

ISBN: 9784873117188Other