mysql:9642
From: "Haruki Nakayama" <"Haruki Nakayama" <haruki@xxxxxxxxxx>>
Date: Mon, 14 Jun 2004 21:31:21 +0900
Subject: [mysql 09642] Re: Insert 毎に接続・切断を繰り返すと不特定な場所でエラーが発生する。
こんにちは。 中山といいます。 あまりエラー内容と関係がないかもしれないのですが一応気になったのは > for (int l = 0; l < 256; l++) { > StringBuffer buf = new StringBuffer(); > buf.append(i).append(COMMA).append(j).append(COMMA); > buf.append(k).append(COMMA).append(l); > String ip = buf.toString(); > System.out.println("ip = " + ip); > insert(ip); > } の部分ですね。 Javaにおいてループ内で変数を宣言してしまうと、そのたびに新たなメモリ領域が確 保されてしまうはずので、この場合ですとこのStringBufferでかなりメモリが食われ ているんじゃないかと思います。 一応、ブロックから抜ければ次のガーベジコレクションの対象にはなりますが、明示 的にGCをしない限りいつメモリから開放されるかはJVM任せになってしまいます。 なので私だったらここは StringBuffer buf = null; String ip = null; for (int i = 0; i < 256; i++) { for (int j = 0; j < 256; j++) { for (int k = 0; k < 256; k++) { for (int l = 0; l < 256; l++) { buf = new StringBuffer(); buf.append(i).append(COMMA).append(j).append(COMMA); buf.append(k).append(COMMA).append(l); ip = buf.toString(); System.out.println("ip = " + ip); insert(ip); } showStatus(); } } } という風に実装するほうがいいのではないかなー、と。 メモリが圧迫されればほかの箇所の実行にも影響が出てくると思うので、直接的な原 因ではないとは思いましたがご指摘させていただきました。 # かくいう私もループの中であろう事か毎回新規のDBの接続をして、パニクったこと があります。 ________________________________________________________________________ _/ _/ _/ _/ Haruki Nakayama _/ _/ _/_/ _/ [中山 晴貴] _/_/_/_/_/ _/ _/ _/ E-Mail :: haruki@xxxxxxxxxx _/ _/ _/ _/_/ Messenger :: clef2@xxxxxxxxxx _/ _/ _/ _/ _/ URL :: http://www.s8.xrea.com/ ________________________________________________________________________
9640 2004-06-14 20:23 ["Kageyama Takahiro" ] Insert 毎に接続・切断を繰り返すと不特定な場所でエラーが発生する。 9641 2004-06-14 20:59 ┣[ML account <ml@xxxxx] -> 9642 2004-06-14 21:31 ┣["Haruki Nakayama" <h] 9645 2004-06-15 10:24 ┃┗[Murayama Toshikiyo <] 9643 2004-06-14 23:42 ┣[<oouchi@xxxxxxxxxx> ] 9644 2004-06-15 00:01 ┃┗[<oouchi@xxxxxxxxxx> ] 9651 2004-06-15 18:21 ┗[<yasuyuki@xxxxxxxxxx] 9652 2004-06-15 19:00 ┣["HIROSE, Masaaki" <h] 9654 2004-06-15 19:29 ┃┗[ML account <ml@xxxxx] 9658 2004-06-16 01:47 ┃ ┗["HIROSE, Masaaki" <h] 9655 2004-06-15 19:42 ┗[seiji takegata <take]