[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 05/09 16:36 / Filesize : 56 KB / Number-of Response : 272
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Garbage Collection (GC)について語るスレ



1 名前:デフォルトの名無しさん [2006/03/06(月) 21:07:30 ]
GCの理想と現実について語ってみない?



2 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:12:20 ]
Javaは糞

3 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:16:34 ]
>>2
「何故なら」と説明しないのはただの中坊でしかないぞ。


4 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:19:37 ]
「アドレスラインがシンボルを表現できる程あればGCいらないのに」
と5文字のラベル時代に妄想したことがある(w



5 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:47:36 ]
このスレッドはゴミと判断されました。

6 名前:デフォルトの名無しさん [2006/03/06(月) 21:50:06 ]
私はエデンの園にいました。

やがて時が経つと我が世界の時を止める悪魔がやってきて、
私を掴んで下界へ投げたのでした。

                           〜ガベージコレクション伝

7 名前:デフォルトの名無しさん [2006/03/06(月) 21:54:03 ]
Garbageってなんか強そう。
必殺技みたい。

8 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 21:59:08 ]
GC がスレッドと相性が悪いのはどうにかならないかな。
このスレッドは GC を組む人向けって事で良いのかな。

取り敢えず、初心者向けの GC 実装のポインタキボン。

9 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 22:03:23 ]
原音聞くとどうしたってガーベジなのに
何で日本ではガベージなの?

10 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 22:18:08 ]
オレはガーベジコレクションいうてるけど



11 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 22:20:15 ]
俺は ジーシー または ガベコレ と呼んでる。

12 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 22:22:11 ]
GCはソースコードを荒らす事無く解放のタイミングを最適化できるんで
結構肯定的に見てるんだけど、更に一歩進むにはコンパイラとの連係
がミソかな?って気がしてる。
同一クラスの生成と解放が続く場合、スコープを抜けても参照元を失
っても敢えて解放せずに残しておいて次の生成を省略し再利用する様
にするだけでも効率が相当よくなる。
ソースコードで同じ事をしようとすると、フローの複雑さに比例して保守
性がズルズルと低下するから、GCの利点がより映える。

13 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 22:27:39 ]
>>8
初心者向けってどういうGC指してる?
仮想マシンとか構文木のまま実行するインタプリタのとか生Cから使うとかの違い?
それともスレッドの話が出てるからSELFとかの実装の方?


14 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 22:29:01 ]
MLKit の Region Inference は後続が出て来ないけど、やっぱり困難なのかな。

15 名前:デフォルトの名無しさん mailto:sage [2006/03/06(月) 22:30:39 ]
inference自体は困難ではないけど、採用するGCの方式との絡みによる。

16 名前:デフォルトの名無しさん [2006/03/07(火) 00:49:17 ]
ガービッジコレクションは二流の象徴

17 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 00:52:02 ]
誤爆?

18 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 00:56:13 ]
馬にいるんだよ。ガービッジって二流の馬が。

19 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 01:12:37 ]
intelはPauseless GCの機能をCPUに組み込んでくれないかな。

20 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 21:40:48 ]
なんでCPU?
てかメモリコンパクションをしてるから
排他しなきゃやばいでしょ

GCの利点はコーディングのしやすさより
むしろこのメモリコンパクションにあるんだと思ってるし



21 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 22:48:03 ]
www.nminoru.jp/~nminoru/java/cms/pauseless_gc.html
いやコレ見るとCPUにそれ専用の命令割り当ててるみたいなんだよね。
CPU全体の構成を大幅に変えるな必要があるならいらないけど、
もし命令付加でできるならやってくれんかなあと。

22 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:02:16 ]
GCは必ずしもメモリコンパクションをするものではないけど。

例えばBoehm GCもRubyのGCもメモリコンパクションはしない。
原理的にムズイから。

23 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:25:57 ]
保守的GCではムズイっていうか無理。
ポインタっぽい値がポインタじゃなかったら書きかえちゃまずいから。

24 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:30:09 ]
不可能ではないので、ムズイ、であってます。

25 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:33:39 ]
JaavやD言語はメモリコンパクションするはず
Dのバイナリってそんなにでかくないから出来ないこたない

26 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:55:01 ]
>>25
アクセス方法に制限があるからできるのだよ。
たとえばヒープメモリが64bit境界で割り当てられてることを前提にして最下位ビットを値として使ったりすることは禁じられてる。


27 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 00:33:52 ]
>>24
やり方教えて。大体でいいから。

28 名前:デフォルトの名無しさん [2006/03/08(水) 00:34:57 ]
GCはオシメの取れないガキへの救済措置。
時給70$以上稼ぐプログラマはきっちり自己管理ができるし、出来なきゃクビだ。
ミサイルの弾道計算などはGCに頼ってる暇などないのだ。

29 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 00:36:12 ]
お前と違って俺はアセンブラでも食えるからなぁ・・・

30 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 00:45:16 ]
>>27
じゃあ大体で。書き換えてもいい奴だけ書き換える



31 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 00:56:25 ]
>>28
2割の努力で8割を得る

32 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 00:58:07 ]
>>30
書き換えてもいいってどうやって判断するんだ?

unary *じゃなくて別のアクセス方法使うってことで一段挟めばできなくもないが
アクセスが遅くなるし、回収しそこねを防ぐために表現をできるだけユニークにしないと
いけないので BoehmGC式が一番だとは思う。

33 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 01:05:33 ]
>>32
>で一段挟めばできなくもないが

不可能じゃないと認めたな。

>どうやって判断するんだ?
方法なんざ選ばなけりゃいろいろあるがな。考えてみ。

34 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 01:19:37 ]
断片化してるメモリをCPUが仮想的に直列化してくれると
簡素な実装でそこそこ以上の実行速度が得られたりは
しないかな?

35 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 01:29:11 ]
>>33
認めたけど...
Boehmは速度の邪魔にならないようにCにGCを組み込むってことだから無理でしょ
Rubyは単に Mark and Sweepだから。

>方法なんざ選ばなけりゃいろいろあるがな。考えてみ。
うーん、全然分からん。っていうか書き換えてもいい奴だけ書き換えるっていっても
そこ指してるやつ全部書き換えなきゃいけないわけだから、破綻してる気がする。

36 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 01:45:31 ]
>>35

>Boehmは...

>23 名前:デフォルトの名無しさん[sage] 投稿日:2006/03/07(火) 23:25:57
>保守的GCではムズイっていうか無理。
>ポインタっぽい値がポインタじゃなかったら書きかえちゃまずいから。

37 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 01:47:31 ]

>うーん、全然分からん。

30分も考えてないじゃん。考えてない。脳が退化してるんかいな。

38 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 01:50:15 ]
>>36

>From: [22] デフォルトの名無しさん <sage>
>Date: 2006/03/07(火) 23:02:16
>
>GCは必ずしもメモリコンパクションをするものではないけど。
>
>例えばBoehm GCもRubyのGCもメモリコンパクションはしない。
>原理的にムズイから。
>_____________________________________________________________________________________
>
>From: [23] デフォルトの名無しさん <sage>
>Date: 2006/03/07(火) 23:25:57
>
>保守的GCではムズイっていうか無理。
>ポインタっぽい値がポインタじゃなかったら書きかえちゃまずいから。
>_____________________________________________________________________________________
>
>From: [24] デフォルトの名無しさん <sage>
>Date: 2006/03/07(火) 23:30:09
>
>不可能ではないので、ムズイ、であってます。


39 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 02:07:18 ]
>>38
>From: [22] デフォルトの名無しさん <sage>
>Date: 2006/03/07(火) 23:02:16

>例えば
>例えば


>From: [23] デフォルトの名無しさん <sage>
>Date: 2006/03/07(火) 23:25:57
>
>保守的GCではムズイっていうか無理。
>ポインタっぽい値がポインタじゃなかったら書きかえちゃまずいから。

40 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 02:15:34 ]
RubyってMark and Sweepで、メモリコンパクションせず、しかも遅いの?
これでJRubyのが性能いいとかだったら笑うな



41 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 02:24:08 ]
保守的GCでも一段挟めば stop and copyで実装できるのは認めてる。
でもコストがかかるので Boehm GCでは使われてない。
Rubyはムズイんじゃなくて mark and sweepを選択しただけ。

書き換えていい奴だけ書き換えて、保守的GCでコンパクションする方法教えて。

Rubyってなんで保守的GCなんだろう? Cとの親和性?

42 名前:デフォルトの名無しさん [2006/03/08(水) 03:32:23 ]
GCをネイティブサポートする言語環境でシステムを実装していたら、
エヴァンゲリオンの最終回は第拾参話であったろう。

43 名前:デフォルトの名無しさん [2006/03/08(水) 03:34:48 ]
>>31
つまりGC搭載言語じゃおもちゃんこしか作れないってこったな。

44 名前:デフォルトの名無しさん [2006/03/08(水) 09:14:24 ]
GCに頼るということは
一時的なリークを許容するってことだよね。

だから、少しのリークも容認できないものには、
結局明示的に開放指示ださないといけない。


45 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 13:00:38 ]
>>44
それじゃ逆向きの説明じゃないのか?

少しのリークも容認できないからGCを用いる。


46 名前:44 mailto:sage [2006/03/08(水) 13:08:08 ]
>>45
一瞬のリークも容認できないものには、
結局、明示的にGCに対して解放の指示ださないといけない。


47 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 13:10:21 ]
そういうパッツンパッツンのときは普通手でGCを起動するんじゃないか。
大抵の処理系は明示的にGCを起動できるでしょ。
GC起動するだけの方が全部の開放を適切に捕まえて書くより楽だけど。

48 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 16:09:07 ]
Boehm GCの簡単な使い方を教えてください >_<

49 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 20:57:13 ]
それくらいgoogleに訊けば教えてくれるぞ。

50 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 22:16:54 ]
どかんとメモリとって
そこを共用体として使えば
GC代わりになるんじゃね?



51 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:22:36 ]
バカ度7強の発言来た

52 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:28:31 ]
ん?なんの問題があるんだ?

53 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:33:45 ]
バカ度8になった。被害は深刻化してます。

54 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 23:44:03 ]
とりあえずマルチコアの恩恵をめちゃくちゃ受けるのがGC


55 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:08:40 ]
だからGCの種類によるっちゅうに。

56 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:09:13 ]
んなこたーない。コンカレント GC もパラレル GC もまだまだでしょ。
stop the world なのも多いし、現状ではシングル性能が物を言う。

57 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:11:04 ]
>>56>>54 宛ね。

58 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 00:40:45 ]
>>56
コンカレントGCとパラレルGCとマルチコアとシングルコアとで比べてみたの?

59 名前:デフォルトの名無しさん [2006/03/09(木) 01:17:04 ]
GCは補助輪付き自転車のようなもの。
いい加減大人になったらはずさないと。

60 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 01:19:44 ]
それしか言えんのか



61 名前:デフォルトの名無しさん [2006/03/09(木) 01:22:48 ]
それで十分だし

62 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 01:26:22 ]
>>58
ちゃんと比較集計した訳じゃないけど、日常的にマルチプロセッサのマシンを使ってるから。
マルチコアの恩恵をめちゃくちゃ受ける GC の設計理論があるなら教えて欲しい。

63 名前:デフォルトの名無しさん [2006/03/09(木) 01:31:58 ]
オライリーから
詳説GC
が出るのはいつの事ですか?

64 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 17:39:50 ]
表紙は何だろうね。
掃除人?ふんころがし?ハイエナ?

65 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 19:31:47 ]
>>64
スカベンジャーならなんでもありじゃないかな。


66 名前:デフォルトの名無しさん mailto:sage [2006/03/09(木) 22:02:18 ]
死肉食いっつーか
ゴミ集め、だろ

67 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 00:03:10 ]
>>62
Javaは大幅に高速化してないか?

68 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 00:10:06 ]
>>67
少ないメモリなら割と速く済むようになってきた。
でもめいっぱいメモリ積んで最大ヒープごっそりくれてやると

時が止まる


69 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 00:30:28 ]
Javaがメモリ空間広ければ高パフォーマンスになるとは限らないのを
この間知ってちょっとショックだった。

70 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 00:57:39 ]
>>69
GCのパフォーマンスなら観察してパラメータ調整するのは常識化してる<<エンタープライズ用途




71 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 01:01:15 ]
JavaVM は jstat とか、統計情報もちゃんと保持してるのが偉いよね。
チューニングも細かく設定出来るし。

72 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 01:16:11 ]
スループットとレスポンス重視とえらべるし、調整が細かく可能なのがえらいよな

JavaはGCが現実的な速度で動くというのを証明してくれたというか

新世代のGCなんてちゃんとチューニングすれば1msもかからんしね
それと普段はFullGC発生させないようにプロファイラで監視するべき

それができないと>>68のようになる


昔Tomcat2つ立ち上げてとか笑える記事があったよなぁと思い出した

73 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 01:22:50 ]
AP のインスタンスを複数上げるという事なら、普通にやってるよ。
SPEC とかはそれ抜きにはあり得ないし。

74 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 01:31:35 ]
ちゃんと目的があって複数のインスタンスを立ち上げることは別にいい

ITPROだったっけ?GCがまともにチューニングで着なくてインスタンス二つにしましたと
自慢げにいってたやつ

75 名前:デフォルトの名無しさん [2006/03/10(金) 05:22:44 ]
だいたいメモリリークさせる事自体恥ずかしい事なのに
そのチューニングとかもうみてらんない

おしめはこう作ればうんこが漏れない、いやこうだ、とか言ってるようなもん。

一人前はそもそも漏らさない。
漏らさない奴にそんな手の込んだオムツ強制されても重苦しくて歩きにくい。
仕事にならないね。

76 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:13:58 ]
>>75
寂しいヤツだな。ここで幾ら叫んでも、貴様の現実は改善しないぜ。

77 名前:デフォルトの名無しさん [2006/03/10(金) 09:46:45 ]
カベッジコレクションはまさにやろうとしてる事自体がゴミのように無駄な行為
名前通りの愚行

78 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:53:19 ]
GCのご機嫌を取るためのノウハウを得る手間と、free/deleteをきちんとやる手間って
あんまり変わらないよな。ぶっちゃけ、そんなたいそうな機構をいれ、パフォーマンスを
多少犠牲にしてまで導入しないといけないようなものなんだろうか。

C++のようにクラスをヒープ以外にスタックや静的に配置できるなら、リークの発生は
かなり抑えられるわけで。

79 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 09:54:38 ]
1mSecって凄まじく長い時間だと思う。

80 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 10:00:17 ]
俺が思うのは「馬鹿にはとっても素晴らしい」ということ。
ただし自分は良くてもプロジェクト内に馬鹿がいるという状況も含める。

馬鹿が書くメモリリークを起こすコードを直すよりはGCを走らせておくほうがいいよ。



81 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 10:05:11 ]
業務系ドカタにはGCというセーフティネットがないとな。

82 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 10:35:56 ]
>>77-81
自作自演までしちゃって、哀れな男…

83 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 10:37:39 ]
つか、C++ 厨か。時代に取り残されるって不幸だな。

84 名前:デフォルトの名無しさん [2006/03/10(金) 11:32:34 ]
>>82
あなたの当て推量は残念ながら外れです。
僕は77ですが78と79は知りません。

85 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 22:51:59 ]
>>78
Javaの次のバージョンのVMではスタックに取るらしいよ

86 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 22:55:19 ]
例えばどこにも参照を渡さないローカルインスタンスなら
スタックに取っておいて捨てるとか、newそのものを無視できるのかもね

87 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 23:29:02 ]
>>85
もう少し詳しく。
C#にあるstackallocの様な構文が導入されるって事?
それとも、コンパイラが判断して自動で挿入するって事?

88 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 23:32:46 ]
>>86のいうようにVMの自動判別
つまり、ソースコードはそのままで高速に動く

89 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 23:34:24 ]
スタックでの割付の利点は短期寿命オブジェクトがヒープ使わないからGCの負荷が大幅にへるんだよねぇ
新世代は元々負荷たいしたことないけど

90 名前:デフォルトの名無しさん [2006/03/11(土) 01:36:39 ]
てか、おまえらなんでそんなにパフォーマンスが気になるんですか?
俺はGCのある言語しか使ってこなかったから、GCあって当然なんだけど、
ポインタってそんなにいいものなんですか?



91 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 01:56:03 ]
main() {
Hoge *hoge;
init(hoge);
}

init(Hoge *hoge) {
hoge = new Hoge();
}

うそみたいなホントの話

92 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 02:17:25 ]
>>91
エラーメッセージ(警告含む)の出ない行を予測するパズル?
空行を除くと、2行目だけはメッセージが出ないと思うのだが。

93 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 02:24:05 ]
同じことがJavaではできない

94 名前:デフォルトの名無しさん [2006/03/11(土) 02:30:38 ]
>>91
小学生でもそんなリークコード書かねーよ。

95 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 02:39:24 ]
出来るか出来ないかの違いを書いただけだが?
main終われば勝手に回収されるだろ

96 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 02:45:22 ]
そういうのは Java スレでやってくれ。

97 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 03:57:29 ]
>>95
OSによる。


98 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 10:01:10 ]
>>90
時と場合による。
それと、GC要らない派はポインタだけを目当てにしているのではないはず。

99 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 10:21:20 ]
GC付きの言語評価器を書く場合はGC使えないわな

100 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 10:54:04 ]
>>91
これはひどい。








[ 続きを読む ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<56KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef