• ベストアンサー

プログラミング

プログラミングについて質問です(JAVA)コード書きすぎエラーというものは存在するのでしょうか?一つのメモ帳に約一万行近く書きました。またはグラフィックスなので要領がデカすぎてエラーがでるのでしょうか? エラーは実行した時にNULLポインターが発生した時爆発するあれです。 NULLポインターじゃないのにNULLポインターエラーが発生する理由どなたか分かりませんか?

  • Java
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
noname#177743
noname#177743
回答No.1

「一つのメモ帳に約一万行近く書きました」とありますが、まさか1ファイルに1万行あるわけじゃないでしょう? きちんと必要に応じてクラス分けして作ってますか? ビルドはできているなら、とりあえず起動時にヒープサイズを調整してみてはいかがですか。起動時オプションとして、-Xmxでヒープの最大サイズを、-Xmsで起動時の割り当てサイズをそれぞれ指定できます。それらを指定してプログラムを実行することでメモリ割り当てを増やすことができます。例えばこんな感じです。 java -Xmx1024m -Xms512m SampleApplication これである程度割り当てを増やして実行したらどうでしょうか。

その他の回答 (2)

回答No.3

>NULLポインターじゃないのにNULLポインターエラーが発生する理由どなたか分かりませんか? どうやって確認したんでしょう? 確実にそういいきれる理由は?

  • kabe64
  • ベストアンサー率72% (13/18)
回答No.2

容量不足で発生する例外はOutOfMemoryだったと思います。 結果としてヌルポになっているのかも知れませんが。 >NULLポインターじゃないのにNULLポインターエラーが発生する理由どなたか分かりませんか? NULLポインダーじゃないというのはどこで判断しました? スタックトレースをペタっと貼って貰えればもう少し回答も出てくると思いますよ。 話し変わって、JDKを使ってるならjconsole.exeがあるはずなので使ってみては如何でしょう。 ヒープの利用状況とか一目でわかりますので、リーク調査やメモリ不足判定など重宝します。

関連するQ&A

  • VBでのプログラミングについて教えてください。

    VBでのプログラミングを学んでいる初心者です。 ファイル出入力の基礎を学んでいるところなのですが、 本に書いてある通りにコードを打ち込んで実行したら、 実行時エラー53 ファイルが見つかりません と表示されてしまいました。 エラーとされた部分のコードは以下の通りです。 Open "sample.txt" For Input As #1 本の指示通り、Windowsのメモ帳で作成したテキストファイルにsample.txtという名前を付けて保存しましたので、ファイルが存在しないということは無いはずなのですが…。 ネットで調べても解決策が見つからず困っています。 ご教授よろしくお願いいたします。

  • javaプログラミング

    JAVAプログラミングです。 教えてください 次のコードを実行すると、 「ary= new int[-5]; 」では例外が発生するのでtry文を用いてこの例外に対する例外処理をしたいんですがどう書けばいいですか?プログラムを実行した後に[例外処理後の実行例〕になるようにしたいです。 〔NegativeArraySizeException 例外を発生するコード〕 class Assignment9_1 { public static void main(String[] args) { int[] ary; // 例外 NegativeArraySizeException が発生 ary=new int[-5]; } } 〔例外処理前の実行結果〕 Exception in thread "main" java.lang.NegativeArraySizeException at Assignment9_1.main(Assignment9_1.java:7) 〔例外処理後の実行例〕 配列要素数の指定は負です

    • ベストアンサー
    • Java
  • プログラミング言語Javaに詳しい方に質問です

    プログラミング言語Javaに詳しい方に質問です と言っても実行の仕方みたいなものですが 学校の宿題でプログラミングの宿題を出されました 私はブロック崩しをやろうと思って、インターネット上から ソースコードをダウンロードしました JavaにOSは関係ないみたいですが、一応言っておくと 家のパソコンはWindowsXPです ダウンロードしたソースコードをメモ帳に保存し、 コマンドプロンプト上で実行したらうまくいきました そこで学校のパソコンでやったらこれが上手くいかないわけです ちなみに学校のパソコンはUNIXです コンパイルしてもエラーはないのです ただUNIXのでやるとappletviewerを実行したとき アプレットが初期化されていないと表示されてしまい 何にも起こらないんですよね ターミナル上にはなんだかよくわからない"at"から始まる 警告みたいな感じなのがたくさん出てきていたのが気になったのですが なぜかわかる方いますか?

    • ベストアンサー
    • Java
  • c言語  2つのファイルを行ごとに読み込むプログラミング

    c言語  2つのファイルを行ごとに読み込むプログラミング 0.txt と 1.txt という2つのテキストフォルダがあり 0.txt の中身は a a b b 1.txt の中身は c c d d というものとします。 これら2つのフォルダを読み込むとき まず1つのフォルダの1行目(a a)を表示し 他方の1行目(c c) 2行目(d d)を表示させて 続いて1つのフォルダの2行目(b b)を表示し 他方の1行目(c c) 2行目(d d)を表示させたいのです。 つまり実行結果が a a c c a a d d b b  ←理想の実行結果です c c b b d d となるようにしたいのですが #include <stdio.h> #include <stdlib.h> #define STR_MAX 256 int main(void) { FILE *fp, *fp2; int i, j, k; char buf[STR_MAX]; char buf2[STR_MAX]; fp = fopen("0.txt", "r"); fp2 = fopen("1.txt", "r"); if (fp == NULL && fp2 == NULL){ printf("\n"); } while(fgets(buf, STR_MAX, fp) != NULL){ while(fgets(buf2, STR_MAX, fp2) != NULL){ printf("%s%s", buf,buf2); } printf("\n"); } fclose(fp); fclose(fp2); return 0; } このプログラミングの実行結果は a a c c a a d d となり、0.txtの2行目(b b)は表示されません。 おそらく while 文 を2重にすることで 不具合が起きているのだと思うのですが 色々と調べた結果、これ以外に プログラミングが思いつきません。 私の理想の実行結果にするためには どこを訂正させると良いのでしょうか? 恐れ入りますが ご回答 どうかよろしくお願いいたします。

  • DirectXプログラミングの参考書を読んで

    『マスタリングDirectXプログラミング 橋口ゆうすけ著』を読みながら、ゲームプログラミングの練習をしているのですが、このプログラムを実行してもエラーが出て実行できません。 エラーがでているのは #include <d3dx9.h> の部分。 エラー内容は include ファイルを開けません。'd3dx9.h': No such file or directory です。 その内容どおりd3dx9.hというファイルがないからなんでしょうけど。。。 本書ではこの内容を実行してみてと書いてあります。 ということは実行できるはず・・・ ちなみに、本書の内容は「DirectX SDK(August 2007)」を用いて・・・と書いてあるんですが、その意味がよくわかっていません。 これが原因なのでしょうか? それともd3dx9.hというファイルがないからなんでしょうか? とは言え、#include <windows.h>や#include <basetsd.h>という行はエラーなく読み込んでいるようなんですが。。。(そんなファイルないよ・w・; なにかアドバイスお願いします。

  • VC++ windows 64ビットプログラミング

    VC++でのwindows 64ビットプログラミングを勉強しています。 以下のMSDNのページにたどり着き、サンプルプログラムを作りながら確かめているのですが、 http://msdn.microsoft.com/ja-jp/library/3b2e7499.aspx 以下の記述の意味がよく分からないので、教えてください。 ---ここから--- int と long は、64 ビット Windows オペレーティング システムでは 32 ビット値です。 64 ビット プラットフォーム用にコンパイルする必要があるプログラムでは、ポインターを 32 ビット変数に割り当てないように注意してください。 ポインターは、64 ビットのプラットフォームでは 64 ビットなので、ポインターを 32 ビット変数に割り当てると、ポインター値を切り捨てることになります。 ---ここまで--- intとlongのサイズが4バイトでこれは32ビットのときと変わらず、 ポインタのサイズが8バイトに拡張された(これはメモリアドレスが64ビットになったのだから当然)のは理解しているのですが、 http://msdn.microsoft.com/ja-jp/library/94z15h2c.aspx 「ポインターを 32 ビット変数に割り当てる」というのがどういうこと(どういうコード)なのかがわかりません。 こんなことかなとも思ったのですが、これはありえない記述ですよね =============== int a = 0; int *pt = NULL; a = pt; //32ビット変数にポインタを割り当て???(というよりポインタを代入か) error C2440: '=' : 'int *' から 'int' に変換できません。 1> この変換が可能なコンテキストはありません。 =============== 32ビットでは問題にならなくて、64ビットになったから問題になって、どう変えれば問題なくなるのか という感じで説明していただけると分かりやすいのかな思います。 よろしくお願いします。

  • VBScriptで作成したプログラムで別のプログラムを動かしたいです。

    表題の通りですが、作成したスクリプトで実行すると下記のようなエラーが出てしまいます。ほかのWindowsアプリケーション(電卓やメモ帳など)ではちゃんと動きます。 何が原因か教えて頂けませんでしょうか? お願い致します。  指定したファイルが見つかりませんでした。  コード:80070002  ソース:(null)

  • 実行途中でのエラー発生について

    こんばんは。 この掲示板を頻繁に利用させていただいている者です。 Visual C++.NET 2003を利用しソケットプログラミングをしていたところ、突然わけの分からないエラーが途中で発生してしまいます。 [エラー内容] Debug Assertion Failed! File: fprintf.c Line:56 Expression: str != NULL For information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts. (Press Retry to debug the application) 上記のようなエラー内容です。 今まで実行可能であったのに、突然エラーメッセージが発生しました。 Line:56ということから56行目を見たところ、str != NULLという記述もしていませんし、かつその行はコメントを記述しています。 なにか原因があるのでしょうか? よろしくお願いします。

  • エディターでは改行なのにメモ帳では↑

    Perlでプログラミングしています。 原因不明の改行に悩まされています。 あるスクリプトを通すと2行だった行が1行になります(csvファイル)。 それはさておき、 エディターではちゃんと2行なのにメモ帳で開くと1行です。 エディターはSHIT-JISのようです。 メモ帳の文字コードはなんなのでしょうか?

    • ベストアンサー
    • Perl
  • Macでのソケットプログラミング(ネットワークプログラミング)

    Macでネットワークプログラミング(UNIXベースのため)をしようと思っているのですが、サーバプログラムを作り実行したところ、「bind : Can't assign requested address」と出てしまい、実行することができません。 コンパイル時にエラーは出なかったので、プログラム自体にミスはないと思います。 ちなみにOSのバージョンはOS X Tiger 10.4.6です。 どなたか詳しい方、教えて下さい。

専門家に質問してみよう