Re: finalization (Re: struct timeval)
河野真治 @ 琉球大学情報工学です。
In article <m3hdqsxxgc.fsf_-_@nospam.maedapc.cc.tsukuba.ac.jp>, MAEDA Atusi <maeda-news@ialab.is.tsukuba.ac.jp> writes
>メモリ管理を自動化しただけで、すべての資源が管理できなくなっちゃうんで
>すか? 今までだってレジスタ割り付けとかスタックとかは自動でやってました
>が。
出来なくなるとは言わないけど、難しいですね。レジスタ割り当て
でも、volatie とか欲しくなるじゃない。スタックでも、alloca
とか欲しくなるでしょ?
OS の役割は資源管理なんだけど、言語の機能も、資源管理とみな
すことも出来ると思う。そうでないとすると、言語は入出力だけを
制御するってことになるけど、普通は、時間とか領域とか問題にす
るよね。問題にならない場合の方が少ないと思う。そういう場合が
ないとは言わないけど。
> メモリ管理と他の資源の「破壊/閉じる/切断」は必ずしも同じタイミングじゃ
> ない…ってのはmalloc/free論争の時に出てきましたよね。
....
> たとえばウィンドウを閉じるとか、ページキャッシュをフラッシュしてDBファ
> イルを閉じるとか、普通はfinalizerでやったりしませんよね。
(懐かし〜) だから、そのタイミングを判断できない場合は、GC
すべきだってことね。それは、その通りだな。
いや、明示的にウィンドウは閉じてGCにやらせるべきではないって
ことか。その時に、ウィンドウのOS/Window System の資源が解放
されれば良くて、メモリはGCで解放されれば良いってことかぁ。
それはどうかなぁ。
> 標準Cで書けない(標準Javaでもできない)ような部分、たとえばGCとかスター
> トアップルーチンとかスレッドライブラリとかを書く時、Jikesなんかは、が
> んがん言語を拡張しちゃってますね。「このインターフェースを使っておくと
> JITコンパイラが特別扱いしてインライン展開する」とかね。 処理系の中でし
> か使わないので別にかまわない。まあCだろうとJavaだろうと、そうするしか
> ないんだけど。
まぁ、そうしても、もちろんいいんだけど「とりあえず、Java で
頑張る」っていう段階があるはずだと思う。(んだけど、あきらめ
つつあります...)
いや、もう少し頑張れば「リアルタイムだと今のJavaでは、Cの半
分の速度」ってのを乗り越えられるかも知れないんだけど、いまん
ところはだめってな所ですね。
---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735