質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

Q&A

解決済

1回答

20034閲覧

【Linux】freeコマンドでjavaヒープ領域を確認したい

Chi

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

0グッド

0クリップ

投稿2017/07/11 02:23

###知りたいこと
linuxでfreeコマンドを実行すると下記のように表示されると思いますが、
linuxで1GBのヒープ領域を取るjavaプログラムを実行しても
メモリの使用量(-/+ buffers/cache:のused)が1GB増えないのは何故でしょうか。

実際に試したところメモリの使用量は0.08GB程度しか増えていません。
(計算:1216212-1130764=85,448(KB))

free total used free shared buffers cached Mem: 8062812 7593700 469112 0 239296 6223640 -/+ buffers/cache: 1130764 6932048 Swap: 4128760 21284 4107476 ▼1GBのヒープをとるjavaプログラム実行後 free total used free shared buffers cached Mem: 8062812 7679112 383700 0 239296 6223604 -/+ buffers/cache: 1216212 6846600 Swap: 4128760 21284 4107476

###試したこと
javaヒープ内のメモリ使用状況はみる必要はないかと思いますが、
念のためjavaヒープをどれくらい使用しているか確認した結果は以下の通りです。

javaヒープの使;用量を確認すると
計算:S0U+S1U+EU+OU+PU
167838.5+148.3+22026.6=190,013.4(KB)=0.18(GB)
(javaプログラム実行前後のfreeコマンドで確認した0.08GBよりも多いです)

S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 52416.0 52416.0 0.0 0.0 419456.0 167838.5 524288.0 148.3 32768.0 22026.6 0 0.000 1 0.006 0.006

###補足情報(言語/FW/ツール等のバージョンなど)

uname -a Linux COLTVSVMSRP21 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「1GBのヒープを取った」というのは論理メモリの話です。freeで表示されるのは物理メモリの話です。
なので、直接にはリンクしません。
OSに対してJavaVMが使用論理メモリを増やしたとしても、そのメモリにアクセスに行かないと物理メモリは割り当てられません。

「その1GBのメモリを先頭から末尾までひたすら書き込み続け、それを繰り返す」ようなプログラムであれば、物理メモリ使用量も1GB近く増えると思います。

投稿2017/07/11 06:14

otn

総合スコア84421

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chi

2017/07/11 06:38

ご回答ありがとうございます! リンクしていないのですね。てっきり物理メモリの1GBを確保するのかと思っていました。 その考えだと、上記の「試したこと」に書いたように、 Javaヒープのうち0.18GBを使用していれば、物理メモリ上の使用量も0.18GB増えるような気がしますが、 どうして0.08GBしか増えないのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問