1read 100read
2012年6月プログラム396: Garbage Collection (GC)について語るスレ (334)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
今はじめるプログラミング言語をさがすスレ (508)
【node.js】サーバサイドjavascript【Rhino】 (816)
自然言語処理スレッド その3 (537)
ACM/ICPC 国際大学対抗プログラミングコンテスト2 (306)
俺主催囲碁プログラミングコンテスト (570)
各プログラミング言語を日本語よりに (353)
Garbage Collection (GC)について語るスレ
1 :06/03/06 〜 最終レス :12/06/17 GCの理想と現実について語ってみない?
2 : Javaは糞
3 : >>2 「何故なら」と説明しないのはただの中坊でしかないぞ。
4 : 「アドレスラインがシンボルを表現できる程あればGCいらないのに」 と5文字のラベル時代に妄想したことがある(w
5 : このスレッドはゴミと判断されました。
6 : 私はエデンの園にいました。 やがて時が経つと我が世界の時を止める悪魔がやってきて、 私を掴んで下界へ投げたのでした。 〜ガベージコレクション伝
7 : Garbageってなんか強そう。 必殺技みたい。
8 : GC がスレッドと相性が悪いのはどうにかならないかな。 このスレッドは GC を組む人向けって事で良いのかな。 取り敢えず、初心者向けの GC 実装のポインタキボン。
9 : 原音聞くとどうしたってガーベジなのに 何で日本ではガベージなの?
10 : オレはガーベジコレクションいうてるけど
11 : 俺は ジーシー または ガベコレ と呼んでる。
12 : GCはソースコードを荒らす事無く解放のタイミングを最適化できるんで 結構肯定的に見てるんだけど、更に一歩進むにはコンパイラとの連係 がミソかな?って気がしてる。 同一クラスの生成と解放が続く場合、スコープを抜けても参照元を失 っても敢えて解放せずに残しておいて次の生成を省略し再利用する様 にするだけでも効率が相当よくなる。 ソースコードで同じ事をしようとすると、フローの複雑さに比例して保守 性がズルズルと低下するから、GCの利点がより映える。
13 : >>8 初心者向けってどういうGC指してる? 仮想マシンとか構文木のまま実行するインタプリタのとか生Cから使うとかの違い? それともスレッドの話が出てるからSELFとかの実装の方?
14 : MLKit の Region Inference は後続が出て来ないけど、やっぱり困難なのかな。
15 : inference自体は困難ではないけど、採用するGCの方式との絡みによる。
16 : ガービッジコレクションは二流の象徴
17 : 誤爆?
18 : 馬にいるんだよ。ガービッジって二流の馬が。
19 : intelはPauseless GCの機能をCPUに組み込んでくれないかな。
20 : なんでCPU? てかメモリコンパクションをしてるから 排他しなきゃやばいでしょ GCの利点はコーディングのしやすさより むしろこのメモリコンパクションにあるんだと思ってるし
21 : http://www.nminoru.jp/~nminoru/java/cms/pauseless_gc.html いやコレ見るとCPUにそれ専用の命令割り当ててるみたいなんだよね。 CPU全体の構成を大幅に変えるな必要があるならいらないけど、 もし命令付加でできるならやってくれんかなあと。
22 : GCは必ずしもメモリコンパクションをするものではないけど。 例えばBoehm GCもRubyのGCもメモリコンパクションはしない。 原理的にムズイから。
23 : 保守的GCではムズイっていうか無理。 ポインタっぽい値がポインタじゃなかったら書きかえちゃまずいから。
24 : 不可能ではないので、ムズイ、であってます。
25 : JaavやD言語はメモリコンパクションするはず Dのバイナリってそんなにでかくないから出来ないこたない
26 : >>25 アクセス方法に制限があるからできるのだよ。 たとえばヒープメモリが64bit境界で割り当てられてることを前提にして最下位ビットを値として使ったりすることは禁じられてる。
27 : >>24 やり方教えて。大体でいいから。
28 : GCはオシメの取れないガキへの救済措置。 時給70$以上稼ぐプログラマはきっちり自己管理ができるし、出来なきゃクビだ。 ミサイルの弾道計算などはGCに頼ってる暇などないのだ。
29 : お前と違って俺はアセンブラでも食えるからなぁ・・・
30 : >>27 じゃあ大体で。書き換えてもいい奴だけ書き換える
31 : >>28 2割の努力で8割を得る
32 : >>30 書き換えてもいいってどうやって判断するんだ? unary *じゃなくて別のアクセス方法使うってことで一段挟めばできなくもないが アクセスが遅くなるし、回収しそこねを防ぐために表現をできるだけユニークにしないと いけないので BoehmGC式が一番だとは思う。
33 : >>32 >で一段挟めばできなくもないが 不可能じゃないと認めたな。 >どうやって判断するんだ? 方法なんざ選ばなけりゃいろいろあるがな。考えてみ。
34 : 断片化してるメモリをCPUが仮想的に直列化してくれると 簡素な実装でそこそこ以上の実行速度が得られたりは しないかな?
35 : >>33 認めたけど... Boehmは速度の邪魔にならないようにCにGCを組み込むってことだから無理でしょ Rubyは単に Mark and Sweepだから。 >方法なんざ選ばなけりゃいろいろあるがな。考えてみ。 うーん、全然分からん。っていうか書き換えてもいい奴だけ書き換えるっていっても そこ指してるやつ全部書き換えなきゃいけないわけだから、破綻してる気がする。
36 : >>35 >Boehmは... >23 名前:デフォルトの名無しさん[sage] 投稿日:2006/03/07(火) 23:25:57 >保守的GCではムズイっていうか無理。 >ポインタっぽい値がポインタじゃなかったら書きかえちゃまずいから。
37 : >うーん、全然分からん。 30分も考えてないじゃん。考えてない。脳が退化してるんかいな。
38 : >>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 : >>38 >From: [22] デフォルトの名無しさん <sage> >Date: 2006/03/07(火) 23:02:16 >例えば >例えば >From: [23] デフォルトの名無しさん <sage> >Date: 2006/03/07(火) 23:25:57 > >保守的GCではムズイっていうか無理。 >ポインタっぽい値がポインタじゃなかったら書きかえちゃまずいから。
40 : RubyってMark and Sweepで、メモリコンパクションせず、しかも遅いの? これでJRubyのが性能いいとかだったら笑うな
41 : 保守的GCでも一段挟めば stop and copyで実装できるのは認めてる。 でもコストがかかるので Boehm GCでは使われてない。 Rubyはムズイんじゃなくて mark and sweepを選択しただけ。 書き換えていい奴だけ書き換えて、保守的GCでコンパクションする方法教えて。 Rubyってなんで保守的GCなんだろう? Cとの親和性?
42 : GCをネイティブサポートする言語環境でシステムを実装していたら、 エヴァンゲリオンの最終回は第拾参話であったろう。
43 : >>31 つまりGC搭載言語じゃおもちゃんこしか作れないってこったな。
44 : GCに頼るということは 一時的なリークを許容するってことだよね。 だから、少しのリークも容認できないものには、 結局明示的に開放指示ださないといけない。
45 : >>44 それじゃ逆向きの説明じゃないのか? 少しのリークも容認できないからGCを用いる。
46 : >>45 一瞬のリークも容認できないものには、 結局、明示的にGCに対して解放の指示ださないといけない。
47 : そういうパッツンパッツンのときは普通手でGCを起動するんじゃないか。 大抵の処理系は明示的にGCを起動できるでしょ。 GC起動するだけの方が全部の開放を適切に捕まえて書くより楽だけど。
48 : Boehm GCの簡単な使い方を教えてください >_<
49 : それくらいgoogleに訊けば教えてくれるぞ。
50 : どかんとメモリとって そこを共用体として使えば GC代わりになるんじゃね?
51 : バカ度7強の発言来た
52 : ん?なんの問題があるんだ?
53 : バカ度8になった。被害は深刻化してます。
54 : とりあえずマルチコアの恩恵をめちゃくちゃ受けるのがGC
55 : だからGCの種類によるっちゅうに。
56 : んなこたーない。コンカレント GC もパラレル GC もまだまだでしょ。 stop the world なのも多いし、現状ではシングル性能が物を言う。
57 : >>56 は >>54 宛ね。
58 : >>56 コンカレントGCとパラレルGCとマルチコアとシングルコアとで比べてみたの?
59 : GCは補助輪付き自転車のようなもの。 いい加減大人になったらはずさないと。
60 : それしか言えんのか
61 : それで十分だし
62 : >>58 ちゃんと比較集計した訳じゃないけど、日常的にマルチプロセッサのマシンを使ってるから。 マルチコアの恩恵をめちゃくちゃ受ける GC の設計理論があるなら教えて欲しい。
63 : オライリーから 詳説GC が出るのはいつの事ですか?
64 : 表紙は何だろうね。 掃除人?ふんころがし?ハイエナ?
65 : >>64 スカベンジャーならなんでもありじゃないかな。
66 : 死肉食いっつーか ゴミ集め、だろ
67 : >>62 Javaは大幅に高速化してないか?
68 : >>67 少ないメモリなら割と速く済むようになってきた。 でもめいっぱいメモリ積んで最大ヒープごっそりくれてやると 時が止まる
69 : Javaがメモリ空間広ければ高パフォーマンスになるとは限らないのを この間知ってちょっとショックだった。
70 : >>69 GCのパフォーマンスなら観察してパラメータ調整するのは常識化してる<<エンタープライズ用途
71 : JavaVM は jstat とか、統計情報もちゃんと保持してるのが偉いよね。 チューニングも細かく設定出来るし。
72 : スループットとレスポンス重視とえらべるし、調整が細かく可能なのがえらいよな JavaはGCが現実的な速度で動くというのを証明してくれたというか 新世代のGCなんてちゃんとチューニングすれば1msもかからんしね それと普段はFullGC発生させないようにプロファイラで監視するべき それができないと>>68 のようになる 昔Tomcat2つ立ち上げてとか笑える記事があったよなぁと思い出した
73 : AP のインスタンスを複数上げるという事なら、普通にやってるよ。 SPEC とかはそれ抜きにはあり得ないし。
74 : ちゃんと目的があって複数のインスタンスを立ち上げることは別にいい ITPROだったっけ?GCがまともにチューニングで着なくてインスタンス二つにしましたと 自慢げにいってたやつ
75 : だいたいメモリリークさせる事自体恥ずかしい事なのに そのチューニングとかもうみてらんない おしめはこう作ればが漏れない、いやこうだ、とか言ってるようなもん。 一人前はそもそも漏らさない。 漏らさない奴にそんな手の込んだオムツ強制されても重苦しくて歩きにくい。 仕事にならないね。
76 : >>75 寂しいヤツだな。ここで幾ら叫んでも、貴様の現実は改善しないぜ。
77 : カベッジコレクションはまさにやろうとしてる事自体がゴミのように無駄な行為 名前通りの愚行
78 : GCのご機嫌を取るためのノウハウを得る手間と、free/deleteをきちんとやる手間って あんまり変わらないよな。ぶっちゃけ、そんなたいそうな機構をいれ、パフォーマンスを 多少犠牲にしてまで導入しないといけないようなものなんだろうか。 C++のようにクラスをヒープ以外にスタックや静的に配置できるなら、リークの発生は かなり抑えられるわけで。
79 : 1mSecって凄まじく長い時間だと思う。
80 : 俺が思うのは「馬鹿にはとっても素晴らしい」ということ。 ただし自分は良くてもプロジェクト内に馬鹿がいるという状況も含める。 馬鹿が書くメモリリークを起こすコードを直すよりはGCを走らせておくほうがいいよ。
81 : 業務系ドカタにはGCというセーフティネットがないとな。
82 : >>77-81 自作自演までしちゃって、哀れな男…
83 : つか、C++ 厨か。時代に取り残されるって不幸だな。
84 : >>82 あなたの当て推量は残念ながら外れです。 僕は77ですが78と79は知りません。
85 : >>78 Javaの次のバージョンのVMではスタックに取るらしいよ
86 : 例えばどこにも参照を渡さないローカルインスタンスなら スタックに取っておいて捨てるとか、newそのものを無視できるのかもね
87 : >>85 もう少し詳しく。 C#にあるstackallocの様な構文が導入されるって事? それとも、コンパイラが判断して自動で挿入するって事?
88 : >>86 のいうようにVMの自動判別 つまり、ソースコードはそのままで高速に動く
89 : スタックでの割付の利点は短期寿命オブジェクトがヒープ使わないからGCの負荷が大幅にへるんだよねぇ 新世代は元々負荷たいしたことないけど
90 : てか、おまえらなんでそんなにパフォーマンスが気になるんですか? 俺はGCのある言語しか使ってこなかったから、GCあって当然なんだけど、 ポインタってそんなにいいものなんですか?
91 : main() { Hoge *hoge; init(hoge); } init(Hoge *hoge) { hoge = new Hoge(); } うそみたいなホントの話
92 : >>91 エラーメッセージ(警告含む)の出ない行を予測するパズル? 空行を除くと、2行目だけはメッセージが出ないと思うのだが。
93 : 同じことがJavaではできない
94 : >>91 小学生でもそんなリークコード書かねーよ。
95 : 出来るか出来ないかの違いを書いただけだが? main終われば勝手に回収されるだろ
96 : そういうのは Java スレでやってくれ。
97 : >>95 OSによる。
98 : >>90 時と場合による。 それと、GC要らない派はポインタだけを目当てにしているのではないはず。
99 : GC付きの言語評価器を書く場合はGC使えないわな
100read 1read 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
【アンチ】関数型言語は使えない【玩具】 2 (388)
C++は難しすぎ 難易度:4 (391)
なぜ、 = が 代入 を 表す 記号 に なったか? (572)
【SecondLife】リンデンスクリプト【LSL】 (277)
コーディングスタイルにこだわるスレ (710)
Objective-C [ObjC part:7]; (513)
--log9.info------------------
【激安】80code.com 使ってる人〜♪3鯖目【クレカ】 (390)
FC2レンタル鯖 3GB/転送量無制限/独自ドメイン (902)
ABCオロチってどうよ? Ver.2 (785)
いい加減にしろ!!J-NAVIゴルァ!!被害者の会 (677)
スピーバーってなに? (201)
Netowlってどうよ? (388)
AZAReA (233)
完全に無料で取得できるtkドメインについて語ろう (521)
【ストーカー】reimariNET商売帳(中出4人目)【業務妨害】 (598)
ホムペ.JP - CGI, SSI, PHP, 容量70MB, 月200円 (269)
系サイト管理者の集まり (445)
突然レンサバ会社が倒産?! (291)
【和塩】geocitiesスレ8【ジオシティーズ】 (283)
無料・無広告・大容量 usamimi.info その3 (959)
WebARENA CLOUD9 (876)
COTERIE*WORLDSってどうよ? 4 (423)
--log55.com------------------
戦姫絶唱シンフォギア XV 714曲目ッ!
ゆるキャン△152泊目(IPアリ)
新幹線変形ロボ シンカリオン THE ANIMATION 64両目
【アイドルタイム】プリパラ マイチケ258枚目【総合】
結城友奈は勇者である -鷲尾須美の章-/-勇者の章- 662
【リゼロ】Re:ゼロから始める異世界生活★死に戻り121回目
SHIROBAKO 470箱目
ゴブリンスレイヤー 125匹目