• 締切済み

JVMで異常終了。メモリ不足の可能性はないでしょうか?

JVMで異常終了。メモリ不足の可能性はないでしょうか? ネットワーク越しにファイルアクセスを行っている最中に、時々、JVMでネイティブコードレベルのエラーが発生します。エラー後、同じ処理を再実行すると、正常に処理が行えています。ネットワークに負荷がかかっているときに発生しているようにも感じるのですが、JVMのメモリが不足しているということは考えられないでしょうか。ただし、エラー時のトレースには、メモリ不足に関するメッセージは出力されていません。可能性として、このようなことは考えられないかどうか、ご教授いただけると助かります。宜しくお願いします。

  • Java
  • 回答数4
  • ありがとう数8

みんなの回答

noname#111181
noname#111181
回答No.4

ANo.1で回答した者です。お礼メッセージをありがとうございます。 そのエラーですと、メモリ不足ではなく、メモリが二重解放されているようです。 たとえば、newとdeleteが対応しておらず、一度のnewに対して2回deleteされていることなどが考えられます。 詳細にトレースしないと、エラー箇所の特定まではできません。

nishimry
質問者

お礼

お礼が遅れまして申し訳ありません。 回答ありがとうございました。 ご教授いただいた通り何かのタイミングで2回freeしてしまっているか、または、本当は解放されていない状態なのに、free時には解放されていると認識される状態に陥ってしまっている、ということが起こっているのではないかと考えています。 javaネイティブコードで発生しているのであまり深いところまでは追えていないのですが、もっと踏み込んで確認してみようと思います。

  • e00083
  • ベストアンサー率31% (25/80)
回答No.3

>JVMのメモリが不足しているということは考えられないでしょうか。 考えられますが その原因を突き止めるためには、エラーを出力するようにプログラムする必要があります。 そもそも、些細なコードミスでもメモリ不足は起こります。 まして、ネットワーク越しなら、メモリ不足以外にも原因は考えられます。

nishimry
質問者

お礼

ありがとうございます。 ネットワークといっているのは、NFSサーバ上に置いたファイルにアクセスするというものです。 確かにメモリ不足以外にもあるとは思うのですが、他の観点からなかなか情報が得られなかった のでメモリ不足を疑ってみました。 原因追求にはプログラムを直してみるのがやはり一番ですよね。 ちなみに、発生しているエラーは、JNU_ReleaseStringPlatformCharsという関数での「double free or corruption(out)」というものになります。

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

そもそもどのようなエラーが発生しているのかわからないので 断定どころか推測すらできないわ。 ネットワーク負荷が原因なら それによって接続が遮断されたのかもしれない。 実際にどんな処理なのかわからないけど サイズの大きなファイルを制限なく読み込むのなら メモリ不足もありそうね。 そうでなくても、きちんとリソースの開放をしていないのなら メモリ不足もありそうね。 実際どのくらいメモリを使っているのか 調べてみてはいかがかしら?

nishimry
質問者

お礼

回答ありがとうございます。 メモリ使用量については確認します。ネットワーク負荷についても自分で確認してみた わけではないのであらためて確認してみるつもりです。 サイズの大きなファイル・・・ですが、扱っているファイルのサイズが数GBにもなるもの ですので、メモリ不足もあるかと考えてみました。 実際発生しているエラーは、「double free or corruption (out)」というものです。 メモリ不足を引き金として処理に異常をきたしてこのようなエラーが出ることはないの かなという疑問から投稿させていただいていました。 接続遮断についても疑ってはいるのですが、それを実証するログが残っておらず、 調査が難航しています。

noname#111181
noname#111181
回答No.1

JVMのエラーログを拝見しないと、何とも回答のしようがありません。 よろしくお願いします。

nishimry
質問者

お礼

回答ありがとうございます。 エラーログ(抜粋)ですが、 jdk1.6.0_02/jre/bin/java: double free or corruption (out): 0x00000000529c6560 ======= Backtrace: ========= /lib64/libc.so.6 /lib64/libc.so.6(cfree+0x8c) jdk1.6.0_02/jre/lib/amd64/libjava.so(JNU_ReleaseStringPlatformChars+0xc) jdk1.6.0_02/jre/lib/amd64/libjava.so(Java_java_io_UnixFileSystem_getBooleanAttributes0+0xbc) ・・・ のような感じです。 NFSサーバ上にあるファイルにアクセスしている時にごくたまに発生し、エラー後、 そのままリターン(再実行)すると今度は正常にいきます。

関連するQ&A

  • JVMのメモリ指定に関して

    開発したアプリ(swing)をJARファイルで配布した場合 配布先のクライアントJVMのメモリ指定は可能でしょうか?? 【クライアントOS】XP 【クライアントJRE】1.6.0_10 なぜそんな事をするのかと言いますと、作成したアプリを クライアントで実行し(JARのダブルクリック)、同じアプリを2つ起動すると 2つ目の方が実行動作が速いことに気付きました。 【1つ目(重たい)】ボタンを押してからのレスポンスが3秒程度 【2つ目 (早い)】ボタンを押してからのレスポンスが1秒程度 (ボタンを押してからjfreechart作成してパネルの再描画までの時間) (必ず1回目は重たくなり、2つ目の方がレスポンスが早い) 処理時間に差があるのかな?と思いトレース文のSystem.currentTimeMillis()で処理速度を測定。 【1つ目(重たい)】 0.5s 【2つ目 (早い)】 0.49s と時間は全然変わりませんでした。。。なぜだ?? 次にRuntime.getRuntime()よりJava仮想マシンのメモリの使用を 測定しました。 【1つ目(重たい)】 合計 10.2MB 使用量 6.7MB (65.2%) 【2つ目 (早い)】 合計 17.9MB 使用量 11.52MB(64.2%) ややや!!JVMのメモリが上がっている。(もちろんですけど) 2つ目起動の11.52MBの使用量に対して1つ起動の合計の10.2MBは 少ないから遅いのか...?? JVMのメモリ使用量を初めから(1つ目) 増やせれば動作早くなるでしょうか?? javaコマンドでの実行はたしか -Xms でJVMのメモリを指定できた と思いますが、jarをダブルクリックで実行した場合のJVMのメモリ って指定できるのでしょうか??皆様ご教授お願いいたします。

    • ベストアンサー
    • Java
  • メモリ不足

    VBで作成したプロジェクトを実行している最中に「メモリが不足しています」というメッセージが表示されてエラーになってしまいます。PCを変えても同じエラーが出てしまいます。 このエラーをなくしたいのですが、メモリ不足となる原因がわからず困っています。どなたか知恵を貸して頂けませんでしょうか。お願いします。

  • これでもメモリ不足になってしまうのでしょうか?

    グーグルクロームで 「エラー このウェブページを表示中に問題が発生しました。」 となる時があるのですが、 原因はメモリ不足との事ですが、 メモリは8GのデスクトップPCを使っていますが これでもメモリ不足になってしまうのでしょうか?

  • ダウンロードとメモリ不足について。

    何かをダウンロードしている最中にメモリ不足だという旨が表示されたので、ダウンロードをやめましたが、料金は発生するのでしょうか?

  • 「実行時エラー 3035メモリ不足です」

    アクセスのテーブルを開いてレコードを並び替えようとすると 「メモリ不足です」と表示されます。 VBAで、 DoCmd.RunSQL SQL のコードでも同じように 「実行時エラー 3035メモリ不足です」と言うエラーが発生します。 VBAでエラーになった場合は、 一度エラーでとまりますが、そのままF5を押すと問題なく実行できます。 メモリは4G積んでいます。win7です。 そんなにメモリが低いでしょうか? アクセスのレコード数は40000くらいです。

  • メモリ不足になった後の処理

    PHPで処理中にメモリ不足になった場合、下記のようなエラーが起こるかと思います。 「Fatal error: Allowed memory size of xxxxx bytes exhausted (tried to allocate 16 bytes) in …」 ここで質問させて頂きたいのですが、 予めメモリ不足が起きる可能性がある処理を、tryなどで囲んでおき、実際にメモリ不足が起きた際は、その処理を飛ばし、それ以降の処理を実行させるといったことは可能でしょうか。 それとも、やはりメモリ不足でエラーが起きているので、その後の処理を実行させるといったことは出来ないのでしょうか。 もし何か方法などございましたら、ご教授頂けると助かります。 また、質問に不備な点などありましたら、ご指摘お願いします。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • メモリ不足 どうしたら良いですか

    基本的にメカはど素人です 1ヶ月前にwin8.1から10にしました まぁまぁ動いていますが、アプリ実行中に「ERROR メモリ不足のこの画像処理を実行できません いくつかのアプリを終了してから やり直して下さい」などと出て先に進めません PCのメモリは4GBで十分のようですが どうしたらよいか教えて下さい

  • 外字エディタでメモリリソース不足

    お世話になります。 winXPで外字を作ろうとエディタを作動させ文字を作り 編集の同じコードで保存と進んだところ「メモリ リソ ース不足です。ほかの処理を終了させてから再実行 して下さい」と出ます。デスクトップ上にはSleinirが あるだけなのでですが・・・ どの様にすれば正常に働く様に出来るのか教えて下さい

  • IE7が強制終了(jvm絡み)

    以下の環境でサーバーからJAVAアプレットを ダウンロードしたときにjvm.dllでエラーが発生し、 IE7が強制終了します。 なぜでしょうか?Vistaのつくりですか? (JAVAソフトが古いからでしょうが・・・) JAVAソフトのバージョンを上げられず、困っています。 (アプレットが1.3対応みたいなので) ▼環境 OS :Windows Vista Home Premium JAVA :JRE 1.3.1_08 IE :IE7 ▼エラー内容 製品 Internet Explorer 問題 動作が停止しました 日付 2008/06/05 10:11 状態 レポートされていません 問題の署名 問題イベント名: APPCRASH アプリケーション名: iexplore.exe アプリケーションのバージョン: 7.0.6001.18000 アプリケーションのタイムスタンプ: 47918f11 障害モジュールの名前: jvm.dll 障害モジュールのバージョン: 0.0.0.0 障害モジュールのタイムスタンプ: 45afd378 例外コード: c0000005 例外オフセット: 00050eea OS バージョン: 6.0.6001.2.1.0.768.3 ロケール ID: 1041

  • メモリ不足

    デジカメdeムービーシアター3というソフトで動画を出力(最高画質、最高サイズ)ですると エラーになってしまいます。 エラー原因は仮想メモリの不足と出るのですが 仮想メモリ(OSの推奨1521MB)これを3倍の4563MBまで仮想メモリを上げても、仮想メモリ不足でエラーになってしまいます。 PCはDELLのDimension4700C OS WIN XP CPU Pentium4 2.8GHz 800MHz(ハイパースレッディング) L1キャッシュ 16KB L2キャッシュ 1MB 物理メモリ 1G(512MB×2) で、作業しています。 これは、物理メモリを増設すれば(最大2Gまで)解決する問題でしょうか? それとも、CPUのこのスペックでは出来ない事なのでしょうか? お詳しい方、ぜひとも教えてください。 宜しくお願いします。

専門家に質問してみよう