GC on C++

@nari3 が作ってくださるとかいう話は私も聞いたきがする。
7
alwei @aizen76

独自アロケータでガベージコレクタ作りたいな

2010-08-04 13:25:50
alwei @aizen76

だいたいメモリセクションを一々指定しないといけないのも面倒過ぎる 理想は何も意識せずにメモリリークやフラグメントが起きない様にすること

2010-08-04 13:27:30
alwei @aizen76

メモリコンパクションは別スレッドでやるとして、後は排他制御が出来れば…

2010-08-04 13:28:54
でちまるさん(実際かわいい) @decimalbloat

コンパクションをC++でやるには色々障害がある(GCがオブジェクトをコピーする方法を知っていないといけない、オブジェクトがコピーされたとき、コピー前のアドレス全てをコピー後のアドレスへと書き換えないといけない)けど、GCのためのメモリ消費を抑えつつこれらのことができるのだろうか…

2010-08-04 13:36:31
Akso de la Malbono @Cryolite

@decimalbloat allocator の pointer 型は別に真のポインタ型でなくとも良いので,それを使って以下死ぬ気でいろいろ頑張ってください!

2010-08-04 13:40:00
alwei @aizen76

@decimalbloat 実際難しいだろうな、とりあえず色々勉強して何か作ってみたい

2010-08-04 13:41:46
でちまるさん(実際かわいい) @decimalbloat

とあるアドレスがあるポインタの先頭であるかを見分ける簡単な作業

2010-08-04 13:42:09
若年寄(もう若くない) @kikairoya

. @nari3先生がC++用のGC作るとかいう話を以前捏造した気が

2010-08-04 13:44:37
相沢陽菜 @fetus_hina

C++でコンパクションできるとフラグメンテーションが軽減されて嬉しい人は多そうだけどそのためのコストが半端じゃなさそう…

2010-08-04 13:45:25
alwei @aizen76

@decimalbloat まだ買ってないよ!! 勉強のためにも買う予定

2010-08-04 13:45:39
出水 @izmktr

@decimalbloat デバッグモードなら直前にddが入ってたりしませんかね?

2010-08-04 13:45:52
でちまるさん(実際かわいい) @decimalbloat

コンパクション実装しようと思ったらまず生のポインタと参照は使用禁止になるな。

2010-08-04 13:49:06
alwei @aizen76

ポインタと参照関係がややこしくなる事は間違いない

2010-08-04 13:50:20
若年寄(もう若くない) @kikairoya

生ポと参照が使えなくなるのはC++的には許容できないので、やはりgc_ptr<T>をですね…

2010-08-04 13:50:24
でちまるさん(実際かわいい) @decimalbloat

@kikairoya そのgc_ptrにコンパクションを実装するにあたって、生のポインタと参照が利用できなくなる、という。

2010-08-04 13:51:34
若年寄(もう若くない) @kikairoya

侵入的でよければCopying GCも実装できそうな気はしている

2010-08-04 13:51:49
でちまるさん(実際かわいい) @decimalbloat

いや、生ポはあってもいいかもしれない、が、参照、てめぇはダメだ。書き換える方法がない。

2010-08-04 13:52:28
若年寄(もう若くない) @kikairoya

@decimalbloat gc_ptr<T> gp;があるときに、gpの実体への生ポや参照は(一時的にgp.lock()で取るようなもの以外)必要ないような。

2010-08-04 13:53:36
でちまるさん(実際かわいい) @decimalbloat

あるクラスが保持しているポインタとそれを保持しているアドレスは、そのクラスから教えてもらえれば、それを元に再配置後そのアドレスに新しいアドレスを書き込めばいいのだけど、参照はそうはいかないのである。

2010-08-04 13:54:28
alwei @aizen76

ある程度ルールがないと自由に使うのは難しいだろうなぁ

2010-08-04 13:56:13
若年寄(もう若くない) @kikairoya

@decimalbloat gp自体はただのハンドル、必要に応じて一時的にlockすればいいんじゃないかなーとか。永続的に生ポを保存しておかないといけない状況って多くないはず

2010-08-04 13:57:48
若年寄(もう若くない) @kikairoya

ああ結局GC関係の論文とかさっぱり読んでないや…

2010-08-04 13:58:24
若年寄(もう若くない) @kikairoya

2段間接参照にしてExact GC可能にするのと、ポインタを直接走査してConservativeで我慢するのとどっちが有利なのかなあ

2010-08-04 13:59:48