トップページ⇒tech
1001コメント341KB

【初心者】Java質問・相談スレッド76【大歓迎】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/11/27(日) 19:24:09
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・内部クラスから外部クラスのローカル変数は使えない。他の方法を考えろ。

前スレッド
【初心者】Java質問・相談スレッド75【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1131860937/


/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980あたりでお願いしまする。
0002デフォルトの名無しさん2005/11/27(日) 19:26:45
http://pc8.2ch.net/test/read.cgi/tech/1131860937/979
> http://pc8.2ch.net/test/read.cgi/tech/1131860937/968
> すいません。
> こういう感じです。
> java.sql.SQLException: Column index out of range.
>
> at com.mysql.jdbc.ResultSetMetaData.getField(ResultSetMetaData.java:468)
>
> at com.mysql.jdbc.ResultSetMetaData.getColumnName(ResultSetMetaData.java:337)
>
> at isbn_mysql.main(isbn_mysql.java:42)


まず英語くらい嫁
カラムインデックスが範囲外だといってるぞ
0003デフォルトの名無しさん2005/11/27(日) 19:28:13
6532個もの大きなデータになったくらいでカラムインデックスが範囲外
とかにはならないはず。

ってことはプログラムのどこかに間違いがあると見た。
ソースを晒してくれると早い。
0004デフォルトの名無しさん2005/11/27(日) 19:32:25
じわりじわりと 20秒おきに1000を狙う俺
0005デフォルトの名無しさん2005/11/27(日) 19:34:00
>>4
スレをちゃんとよく見ろ。
前スレはあと3レス残ってるぞ
0006デフォルトの名無しさん2005/11/27(日) 19:53:37
>>前スレ1000
それをやるなら「うはwwwwおkwwww」だろ糞が。
0007デフォルトの名無しさん2005/11/27(日) 21:17:18
>>2>>3
ありがとうございます。
ソースはこういう感じです。
try
{
//接続の準備
String drv = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql:///amp";
String usr = "";
String pw = "";

//データベースへの接続
Class.forName(drv);
Connection cn = DriverManager.getConnection(url, usr, pw);

0008デフォルトの名無しさん2005/11/27(日) 21:17:56
//問い合わせの準備
Statement st = cn.createStatement();
String qry = "SELECT * FROM md_bni";

//問い合わせ
ResultSet rs = st.executeQuery(qry);

//データの取得
ResultSetMetaData rm = rs.getMetaData();
int cnum = rm.getColumnCount();

while (rs.next())
{
for (int i = 1; i <= cnum; i++)
{
System.out.print(rm.getColumnName(i) + ":" + rs.getObject(i) + " ");
}
System.out.println("");
}

//接続のクローズ
rs.close();
st.close();
cn.close();
}
catch (Exception e)
{
e.printStackTrace();
}
0009デフォルトの名無しさん2005/11/27(日) 21:33:13
>>8
>System.out.print(rm.getColumnName(i) + ":" + rs.getObject(i) + " ");
0010デフォルトの名無しさん2005/11/27(日) 21:35:44
columnNameはx軸
objectはy軸ってこったな
0011 ◆5Xb.DVgWMQ 2005/11/27(日) 21:53:41
Java3Dに関する質問です。

----
import java.awt.Container;
import javax.swing.*;
import javax.media.j3d.Canvas3D;
import com.sun.j3d.utils.universe.SimpleUniverse;

public class MyDialog extends JDialog {
private Canvas3D canvas;
public MyDialog() {
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
Container pane = getContentPane();
//canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
//pane.add(canvas);
pack();
}
public static void main(String[] args) {
MyDialog dialog = new MyDialog();
dialog.setVisible(true);
}
}
----
0012 ◆5Xb.DVgWMQ 2005/11/27(日) 21:54:12
のようなコードを書き、実行したところ、小さいダイアログが出て、ダイアログを削除したら、
javaプログラムが終了しました。

しかしながら、プログラム中断のcanvas関連のコメント文をはずして実行するとダイアログが正常に
終了しなくなってしまいます。

具体的にいいますと、
%> java MyDialog
と打った後、全くコマンドプロンプトが戻ってこなくなるのです。
これはどうしてでしょうか? Canvas3Dに何かしらの設定を行う必要があるのでしょうか。
教えてください。
0013デフォルトの名無しさん2005/11/27(日) 21:59:55
>>12
意味不明
実行してダイアログを削除って何?
0014デフォルトの名無しさん2005/11/27(日) 22:03:47
>>9
どういうことですか?
while (rs.next())
{
for (int i = 1; i <= cnum; i++)
{
System.out.print(rm.getColumnName(i) + ":" + rs.getObject(i) + " ");
}
System.out.println("");
}
を消して System.out.println(cnum);で表示cnumをj表示させたら
1と表示されました。
0015デフォルトの名無しさん2005/11/27(日) 22:08:53
× を消して System.out.println(cnum);で表示cnumをj表示させたら
   1と表示されました。
○ を消して System.out.println(cnum);でcnumを表示させたら
   1と出力されました。

誤字多くてすみません。
0016デフォルトの名無しさん2005/11/27(日) 22:15:39
>>14>>15
配列arrayの長さが3だとして
あなたは

for (int i = 1; i <= 3; i++)
System.out.print(array[i]);

って書きますか?
0017 ◆5Xb.DVgWMQ 2005/11/27(日) 22:17:32
>>13
ごめんなさい、 >>11のようなコードを書いて、
%> java MyDialog
と打って、プログラムを実行します。
そうすると、ダイアログが表示されます。
そのダイアログを閉じると、プログラムが正常に終了し、プロンプトが戻ってくるのですが、

中段のコメントアウトをはずし、canvasをダイアログに貼り付けると、
ダイアログを閉じても、プログラムが終了しないままになってしまうんです。

これは、どうしてでしょうか?
0018デフォルトの名無しさん2005/11/27(日) 22:26:35
新規質問
JTabbedPaneとJMenuBarは同時には使えないんですか?

JFrameクラスのインスタンスをframe1とします。
frame1にJMenuBarを加える。
frame1にgetContentPane()してからJTabbedPaneを加える。

上のようにしてもタブしか表示されません。
0019デフォルトの名無しさん2005/11/27(日) 22:27:54
>>687
おまえ・・・そのAAどこで・・・
0020デフォルトの名無しさん2005/11/27(日) 22:29:29
>>18
BorderLayoutのCENTERをJTabbedPane, NOTHをJMenuBarでも無理?
0021デフォルトの名無しさん2005/11/27(日) 22:34:32
>>16
できました!
上にはfor (int i = 1; i <= cnum; i++)かいてたんですけど、
cnumが大きいので10にしてました。
for (int i = 1; i <= 10; i++)
そこがいけなかったんですね
どうもありがとうございました。
0022デフォルトの名無しさん2005/11/27(日) 22:40:29
いやーたまたまだと思うが・・・
誰かがx軸とy軸って書いた意味を考えよう
0023182005/11/27(日) 22:45:54
しばらく試行錯誤してみます。
0024182005/11/27(日) 22:56:31
解決しました。

原因はJMenuBarにJMenuを加えていなかったことでした。
加えてみると、タブもメニューバーも表示されました。

JMenuBarはJMenuを加えることで初めて厚みがでるんですね
0025デフォルトの名無しさん2005/11/27(日) 22:57:50
>>24
SUNが学歴だけではダメだぞと釘を刺すために作った仕様さ。
0026デフォルトの名無しさん2005/11/27(日) 23:01:05
>>19
誤爆?
0027デフォルトの名無しさん2005/11/27(日) 23:17:28
>>12は
ダイアログ上に3Dオブジェクトを
表示させようとしているのか?
ふつうそういうことやるかね?
0028デフォルトの名無しさん2005/11/27(日) 23:17:56
>>25
意味不明
0029デフォルトの名無しさん2005/11/27(日) 23:19:15
>>28
イマジネーションが足らない奴だな。
エスパー度が低いってのはPGとして致命的だぞ。
0030 ◆5Xb.DVgWMQ 2005/11/27(日) 23:23:39
>>27
そうです。3Dオブジェクトをダイアログ上に表示させようとしています。

駄目でしょうか? ダイアログが不適であれば、他に何を使うべきでしょう?
あと・・・できれば、やっぱりダイアログを使いたいので・・・どうしても、駄目なんでしょうか?
0031デフォルトの名無しさん2005/11/28(月) 00:08:30
>>22
>>10ですね。
どういうことですか?
0032デフォルトの名無しさん2005/11/28(月) 00:16:41
PCにExcelは入ってるかい?
項目をX軸にいくつか書いていって
そっから下(Y軸)にデータを書いてくでしょ
0033デフォルトの名無しさん2005/11/28(月) 00:58:37
いきなりすいません.
javaプログラムからMatLabと通信したいのですが無理ですか?
0034デフォルトの名無しさん2005/11/28(月) 01:03:57
>>29
おめえは占い師かアホ
勘だけでしか行動できない
論理的思考能力が薄い奴のほうが
プログラマ向いてないぞ( ゚Д゚)ゴルァ!!
0035デフォルトの名無しさん2005/11/28(月) 01:04:21
>>30
Frame, JFrame
0036デフォルトの名無しさん2005/11/28(月) 01:08:51
>>33
Runtimeクラスを使えばできる
0037デフォルトの名無しさん2005/11/28(月) 01:22:03
そういやMATLABってJavaが使えるんだっけ。
しかしMATLAB6R1xに入っているJavaは
何故か相変わらずMSJVMだったよな。
あれは最新版MATLAB7では直っているんだろうか?

っていうかSun純正Javaにしてもらいたいもんだな。
IBM製JVMでもいいかもしれないが。

MATLABからJavaオブジェクトを生成して
呼び出して使うということなら知っているが、
Javaから呼び出す具体的な方法は知らんな。
Runtimeクラスとかつかえばできなくもないが。
0038デフォルトの名無しさん2005/11/28(月) 02:55:57
現在「やさしいJava活用編」の8章のSample1をやっているんですが
JDBCがセットアップしたはずなのに使えません。
ファイルのコンパイルはできるのですが実行しようとすると
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.ClassforName0(Native Method)
at java.lang.ClassforName(Unknown Source)
at Sample1.main(Sample1.java:15)
て出て実行できません。コレって一体どういう事なんでしょうか?
誰かわかる方お願いします。
0039デフォルトの名無しさん2005/11/28(月) 03:13:24
System.in, System.outってデフォルトでアスキーモードですよね?
バイナリモードで読み書きしたいのですが、どうすればよいのでしょうか?
0040デフォルトの名無しさん2005/11/28(月) 03:23:30
どっちもStream系だからあなたのいうバイナリモードだが。
0041デフォルトの名無しさん2005/11/28(月) 03:29:14
アハッ、そうでしたか。
どうも有り難う御座いました。
0042デフォルトの名無しさん2005/11/28(月) 03:49:26
>・内部クラスから外部クラスのローカル変数は使えない。他の方法を考えろ。

この断定おかしくないけ?
staticな内部クラスの場合はそうかもしれんが。
0043デフォルトの名無しさん2005/11/28(月) 05:06:45
mysqlって日本語カラム使えたっけ?
まあutf8変換で苦しんでくれ(w
0044デフォルトの名無しさん2005/11/28(月) 06:06:26
MSのSQLでも
ACCESSでも
まともなプログラマなら
カラム名には日本語使わないよ

君子危うきに近寄らず
0045デフォルトの名無しさん2005/11/28(月) 07:36:45
例えば、
num a=1;
String str = ”文字列”;

このstrに数字をaの値を入れるにはどうしたらいいですか?
String str = ”a”;
としたらstrには文字列aだから、ダメなのですが。

int型のaに代入された値をstrに文字列として入れる方法を教えてください。

0046デフォルトの名無しさん2005/11/28(月) 07:43:01
str = a.toString();
0047デフォルトの名無しさん2005/11/28(月) 08:02:58
str = "" + a;
0048デフォルトの名無しさん2005/11/28(月) 08:03:59
>>46    
int a=100;
String str;
str = a.toString();
としたら、

Ans.java:9: int は間接参照できません。
str1 = a.toString();

というエラーがでます。
0049デフォルトの名無しさん2005/11/28(月) 08:10:45
>>45
宿題スレとのマルチかよ…
0050デフォルトの名無しさん2005/11/28(月) 08:12:02
>>49
どっちに書けばいいのか迷ったので両方にお願いしました。
すいません。
0051デフォルトの名無しさん2005/11/28(月) 09:40:41
>>42
内部クラスが static ではない or ローカル変数が final ではない
とアクセスできない
0052デフォルトの名無しさん2005/11/28(月) 10:27:32
>>42,51
無名クラスじゃない内部クラスから、ローカル変数にアクセスする方法を教えていただきたい。
0053デフォルトの名無しさん2005/11/28(月) 11:01:29
arraylistの配列クラスをつかってary[1], ary[2], ary[3], ary[4]を用意して、初期値として10個の要素をaddしました。

次にfor文をつかって20個の要素をすべてにaddしようとしたら、
ary[1], ary[2], ary[3]は要素数が30になったのに、ary[4]だけは50になってしまいました。

なんででしょう?考えられる可能性があったら教えてください。
arraylistの仕様でしょうか?

0054デフォルトの名無しさん2005/11/28(月) 11:05:33
>>53
ソース貼れ。
お前さんがどこか間違えてる。
0055デフォルトの名無しさん2005/11/28(月) 11:51:59
>53
エスパーを求めるな
0056デフォルトの名無しさん2005/11/28(月) 12:11:29
>>53
ArrayListをarraylistって書くな。
0057デフォルトの名無しさん2005/11/28(月) 12:43:09
>>53
その説明だけじゃ答えようがない。
0058デフォルトの名無しさん2005/11/28(月) 13:04:49
>>53
歯磨けよ。
0059デフォルトの名無しさん2005/11/28(月) 13:20:08
>>53
自慰は自宅でやれ
0060デフォルトの名無しさん2005/11/28(月) 13:25:00
Javaに、オブジェクトを簡単にファイルに保存するライブラリはありますか?
RubyのPStoreとかPythonのShelveみたいなものを想定しています。

ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=PStore
http://www.python.jp/doc/nightly/lib/module-shelve.html
0061デフォルトの名無しさん2005/11/28(月) 14:22:01
Serializeでググれ
0062デフォルトの名無しさん2005/11/28(月) 15:32:46
Object型をIntegerに変換する一番の早道はどうなりますか?
今は
new Integer(rs.getObject("hoge").toString());

とやってます。たぶんすごく無駄なことをやっているんだろうな
と思うのですが・・・
0063602005/11/28(月) 15:47:08
>>61さん、ありがとうございます。
FileOutputStream/FileInputStreamを使ってjava.io.Serializableをimplementsするオブジェクトを読み書きする、というページがたくさん見つかり、内容は大体理解できました。
↓のような、もうちょっと高水準なライブラリはないのでしょうか。

FiledMap fm = new FiledMap(new File("data.fs"));
MyClass foo = (MyClass)fm.get("foo");
foo.setCounter(foo.getCounter() + 1);
fm.put("foo", foo);
fm.close();
0064デフォルトの名無しさん2005/11/28(月) 15:47:31
対象の値の存在チェックをするために
mapに存在する値の一覧(コレは固定)を入れといて、getしてnullじゃ無かったらあるよ
てなことをしてるんだすがそこで質問です。

finalでmap宣言して、static句でmapに入れてあげても、mapの中身は替えられるですよね?
(mapオブジェクトがfinalなだけだからシングルトンオブジェクトのような感じになっちゃうのかな?間違ってたらスマソ)

値変えられないコレクションてどうやってつくればいいの?
0065デフォルトの名無しさん2005/11/28(月) 15:48:14
>>62
cast
0066デフォルトの名無しさん2005/11/28(月) 15:49:16
>>64
java.util.Collectiosあたりでもぐぐれ
0067デフォルトの名無しさん2005/11/28(月) 15:58:56
>>64
public static <T> List<T> singletonList(T o)
0068デフォルトの名無しさん2005/11/28(月) 16:02:13
static
<T> List<T>
unmodifiableList(List<? extends T> list)
0069デフォルトの名無しさん2005/11/28(月) 16:03:57
>>62
staticメソッド使ったほうがよくね?
0070デフォルトの名無しさん2005/11/28(月) 16:23:06
>>67
>>68
<T>ってテンプレートだっけ?1.5からつかえるやつの。
1.4じゃどうすれば?

0071デフォルトの名無しさん2005/11/28(月) 16:39:28
>>70
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Collections.html
unmodifiable~

ってか>>66で既に出てるんだからAPIドキュメント読むくらいして欲しいぞ。
0072デフォルトの名無しさん2005/11/28(月) 16:52:55
>>65
ありがとん
0073デフォルトの名無しさん2005/11/28(月) 17:02:15
JavaではC言語ライクな
Point a[] = {
  {1,2},
  {3,4},
  {5,6}
};
みたいなオブジェクト配列の初期化はどうやればいいんでしょうか
0074デフォルトの名無しさん2005/11/28(月) 17:06:52
>>73
import java.awt.Point;
...
 Point[] points = new Point[] {
  new Point(1, 2);
  new Point(3, 4);
  new Point(5, 6);
 }
0075742005/11/28(月) 17:08:26
おおっと・・・

 Point[] points = new Point[] {
  new Point(1, 2),
  new Point(3, 4),
  new Point(5, 6)
 }
0076732005/11/28(月) 17:29:23
>>74
おお、なるほど
ありがとうございます
0077デフォルトの名無しさん2005/11/28(月) 17:36:44
>>70
Generics

Java GenericsはC++ templateとは厳密には
同義ではないらしい。
タイプセーフだし

豆蔵のページでそう説明されていた。
0078デフォルトの名無しさん2005/11/28(月) 17:38:46
>>62
(Integer)rs,getObject("hoge");


と書き換えればいいが、

rsってJDBCのResultSetのことか?

なら
int hoge = rs.getInt("hoge");
のほうがいいだろ。
0079デフォルトの名無しさん2005/11/28(月) 17:43:33
ResultSetって
TigerになってもGenerics使えるのが少ないんだな。

引数にGenericsで型を指定できるが戻り値には指定できないんだな。

Object getObject(int i, Map<String,Class<?>> map)
この ResultSet オブジェクトの現在行にある指定された列の値を、Java プログラミング言語の Object として取得します。
Object getObject(String colName, Map<String,Class<?>> map)
この ResultSet オブジェクトの現在行にある指定された列の値を、Java プログラミング言語の Object として取得します。
0080デフォルトの名無しさん2005/11/28(月) 18:53:04
Scrollbarの横幅を変えるにはどうしたらいいの?
0081デフォルトの名無しさん2005/11/28(月) 19:19:28
ディスプレイの水平解像度を変える
0082デフォルトの名無しさん2005/11/28(月) 19:22:46
変なメガネをかける
0083デフォルトの名無しさん2005/11/28(月) 19:31:40
自作する
0084デフォルトの名無しさん2005/11/28(月) 20:29:31
>>52
ごめん。該当の文書いた本人だけどすっごくケアレスミスした予感。申し訳ない。・゚・(ノД`)・゚・。
確かにそれは内部クラスの中でも無名クラスのみに該当することだ罠 orz
0085デフォルトの名無しさん2005/11/28(月) 20:31:03
っていうか次スレからテンプレの修正を希望します。


……とりあえず、質問者が 『無名クラス』 じゃなくて 『内部クラス』 って単語を多くつかってたような気がする〜
とか言い訳してみる 。・゚・(ノД`)・゚・。
0086デフォルトの名無しさん2005/11/28(月) 21:53:11
FileInputStream inFile = new FileInputStream(fileName);
ObjectInput in = new ObjectInputStream(inFile);
while(true){
Data data = (Data)in.readObject();
//終了条件省略
}
で,class Dataをいくつか直列化して保存してあるファイルを読み込もうとしてるんだけど,OutOfMemoryErrorが発生して読み切れません.
objは毎回破棄しているから,FilInputStream内にファイルの中身が全部詰まってしまっているせいだと思うんだけど,回避方法はありませんか?
-Xmxを使わない解決法を探しています.
保存されているObjectは一つ5M程度,ファイルは80M程度です.
0087デフォルトの名無しさん2005/11/28(月) 22:00:16
どういう処理やりたいのかわからんけど
普通にプロファイラで調べたら?

0088デフォルトの名無しさん2005/11/28(月) 22:33:56
>>87
やりたいことは・・・
巨大なデータを保存して,取り出したい
⇒普通に全データを一気に取り出したのではメモリが足りない
⇒分割して保存
⇒分割して取り出したい
⇒ファイルの後半にあるデータを取り出そうとするとOutOfMemoryError←いまここ
fileの中にDataが配列のようにずらずら並んでいると思ってください.
その中の一部だけ取り出して,メモリ不足を回避.わーい.
というのを狙っていました.
0089デフォルトの名無しさん2005/11/28(月) 22:40:02
直列化するまえにZioOutputStreamで圧縮すればいいのでは?

それと直列化したいオブジェクトそのものを分割することも。

分割して圧縮して直列化して

取り出すときに解凍して統合する。

objは毎回破棄って?まさかSystem.gc()をつかってるわけではない?
java.lang.ref.SoftReferenceとか使って解放させた方がいいかも。
0090デフォルトの名無しさん2005/11/28(月) 22:52:36
>>89
圧縮することは根本的解決にならないので・・・
で,
while(true){
 in.readObject();
 //終了条件省略
}
にしてもやっぱりOutOfMemoryですた.
ちょっと読み込んで,読んだ分はメモリから削除して次を読んで・・・
とやりたいだけなのに.
0091デフォルトの名無しさん2005/11/28(月) 23:00:51
System.gc(); は要らないだろ。メモリが足りなくなった時点で参照されてないオブジェクトは全部消される。

個人的には、ObjectInputStream 側が悪さしていそうな予感。
だけど確証が持てないので……シリアライズ使うの止めた方が懸命。
それほどの巨大データなら、独自にデータベースもどきを作った方が早いと思うよ。
0092デフォルトの名無しさん2005/11/28(月) 23:19:40
ひょっとして、whileをはずして
in.readObject();
一発だけでOutOfMemoryErrorじゃない?
Dataがリスト構造みたくつながってて、全部釣れてきちゃうんじゃ?
0093デフォルトの名無しさん2005/11/28(月) 23:24:34
参照リンクが切れてないだけじゃないの?
0094デフォルトの名無しさん2005/11/28(月) 23:25:30
>>91
要らないメモリ変数にはnull突っ込まないとGCされないよ。


単純にバッファに読み込まないでseekすればよさそうだけど、多分探すの大変で遅いだろうね。
DBみたいに固定長のファイルフォーマット仕様を考えて、それを読み込むぐらいだな。
単純にメモり積むのが簡単だけど。
0095デフォルトの名無しさん2005/11/28(月) 23:40:09
シリアライズされた状態で5Mもあるオブジェクトということは、
メモリに展開したら…

つうか、何でそんなでかいのよ。
0096デフォルトの名無しさん2005/11/28(月) 23:42:16
>>94
nullかどうかじゃなくて切り離されたタイミングでGCで回収対象になるんだから
ループ内で変数に代入していたら他に参照がなければちゃんときえる
意味のある場合以外はnull代入はやめたほうがいい

どうでもいいが>>86はObjectInputStreamの仕様わからないで使うなよ・・・
ちゃんとマニュアルを読んでみよう

ヒント:以前もoutputのほうで問題出ていた
0097デフォルトの名無しさん2005/11/28(月) 23:42:57
>>94
nullにしただけでもGCされるとは限らないし
下手にやみくもにnullしただけだと
返ってパフォーマンスを悪化させることもあるし。

java.lang.ref.Referenceを上手に使った方がいいかと思われ。
0098デフォルトの名無しさん2005/11/28(月) 23:46:00
初歩的な質問で申し訳ないのですが
long型とint型の数値を比較するために
条件文の中でキャストってできるのでしょうか?

int i;
long j;

i=1
j=88888888888888

if( (long) i < j )       ←←←←←←←←←←←←条件文の中でキャスト可能?
{
・・・・・・・・・・・・・・・・・・
}
0099デフォルトの名無しさん2005/11/28(月) 23:46:32
>>90
1バイトづつ、固定バイトずつ読み込む
read()系メソッドつかったほうがいいのでは。


っていうかもっといいのは
直列化オブジェクトがどんなクラスの
オブジェクトなのか非常に気になるな。
もしかしてリストの中にでっっかいリスト
が入っているとかか?

それともひたすらnewしすぎてメモリ消費が膨大になっているか。

while文の中でRuntime.getMemory()
とかgetfreeMemory()とか使ったら
どんな数値がでるのか気になる。

0100デフォルトの名無しさん2005/11/28(月) 23:47:02
>>98
コンパイル、実行してみればわかる
0101デフォルトの名無しさん2005/11/28(月) 23:47:45
>>86
なぜ-Xmx使っちゃいけないのか気になるぞ
■ このスレッドは過去ログ倉庫に格納されています