GC、ガベージコレクション、ガベージコレクタ、ガーベジコレクション、ガーベジコレクタは使えない。
以下GCと記す
プログラマをメモリ管理から開放する!
といいつつ、メモリリーク問題の文献が大量にある。
これすなわち、メモリリーク問題が全然解決していないということ。
さらに、メモリ解放のタイミングの文献まで大量に生み出した。
これすなわち、新たなるメモリ管理に関する問題を生み出したということ。
malloc、freeじゃないが
結局のところ、メモリを管理するという技術は、今しばらくは、身につける・教える・学ぶべきではないだろうか?
使って、そのまま放置しても、基本的にはGCがなんとかしてくれている。
ランジョブからジョブ終了までさほどの時間を要さない。メモリも大して使わないならいいだろう。
しかし、規模が大きくなり常駐ジョブやメモリ大量使用のジョブになってくると、そんなメモリ管理の方法でやっていると、
上記「文献」を生み出されてしまう。
入門時は、メモリに無頓着でもいいだろう。それよりも、目的を達成することが先決だ。
しかし、慣れてきたら、やはりメモリの管理まで余裕を持って自分で行うべきだろう。
前スレ
GCは失敗。メモリは自分で管理せよ!
http://peace.2ch.net/test/read.cgi/tech/1412986420/
GCは失敗。メモリは自分で管理せよ! その2©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2015/11/18(水) 23:24:59.79ID:BUQ68wTG
469デフォルトの名無しさん
2016/04/17(日) 23:17:23.70ID:cFoKw8Zx 今どき意図的にやらない限りメモリフラグメンテーションで困るような場面があるか?
アドレス空間も余裕出てきたし、多少おかしな確保パターンで浪費してもGCほど実メモリを食わないし。
今どき主流のサイズ毎に空きを管理するmallocは優秀だしね。
これがダメならlinuxカーネルとか先に落ちちゃうぞ。
アドレス空間も余裕出てきたし、多少おかしな確保パターンで浪費してもGCほど実メモリを食わないし。
今どき主流のサイズ毎に空きを管理するmallocは優秀だしね。
これがダメならlinuxカーネルとか先に落ちちゃうぞ。
470デフォルトの名無しさん
2016/04/18(月) 15:56:44.18ID:kcE0qDSU471デフォルトの名無しさん
2016/04/18(月) 16:30:17.23ID:BDPQ12Es 自前のメモリ管理が超下手くそなだけやろ
修業して出直してこいや
修業して出直してこいや
472デフォルトの名無しさん
2016/04/18(月) 16:37:09.21ID:OvHIqTOi 自慢になってないような
473デフォルトの名無しさん
2016/04/18(月) 16:44:52.62ID:9yQABY6F ゲームだとフラグメント問題になること多いよ
ゲーム専用機なら特に
最近は特にオープンワールドが当たり前になってるけど
あれストリーミングでどんどんメモリ置き換えていくしね
ゲーム専用機なら特に
最近は特にオープンワールドが当たり前になってるけど
あれストリーミングでどんどんメモリ置き換えていくしね
474デフォルトの名無しさん
2016/04/18(月) 16:47:31.98ID:/wa5LIjH jemallocのようなモダンなmalloc実装使えば良かったのでは。
475デフォルトの名無しさん
2016/04/18(月) 17:47:00.91ID:IBBVu28x ゲーム専用機でフラグメンテーションおこすとか開発者としての適性を疑われても不思議ではない。
オブジェクトの寿命管理すらしないのか?
オブジェクトの寿命管理すらしないのか?
476デフォルトの名無しさん
2016/04/18(月) 18:51:08.61ID:RPQ9NKJO メモリのフラグメンテーションをC/C++でコントロールする方法ってあるの?
mallocの実装頼りじゃなく。
mallocの実装頼りじゃなく。
477デフォルトの名無しさん
2016/04/18(月) 19:05:27.63ID:OvHIqTOi mallocの挙動がわかってれば、ある程度は・・・・
478デフォルトの名無しさん
2016/04/18(月) 19:14:30.71ID:OvHIqTOi 細かくメモリ要求するから、下回りで時間がかかる
メモリ分断されてもオンメモリでの検索はさほど時間がかからない
(空きができても、そこに入らないときに)
メモリ分断されてもオンメモリでの検索はさほど時間がかからない
(空きができても、そこに入らないときに)
479デフォルトの名無しさん
2016/04/18(月) 19:15:14.97ID:9yQABY6F480デフォルトの名無しさん
2016/04/18(月) 19:21:39.69ID:IBBVu28x 寿命管理で解決できないとか、フラグメンテーションがどういう現象か分かっているの?
汎用の寿命管理APIみたいなのを使うとか言うのと勘違いでもしている?
汎用の寿命管理APIみたいなのを使うとか言うのと勘違いでもしている?
481デフォルトの名無しさん
2016/04/18(月) 20:02:22.75ID:3yZKjOEp >>480
おいおい・・
この場合寿命を管理できないってのはgiven conditionとして考えないと
そりゃ寿命があらかじめわかってるなら苦労しないっての
大規模なプログラムでそんな恵まれた状況は例外的だよ
おいおい・・
この場合寿命を管理できないってのはgiven conditionとして考えないと
そりゃ寿命があらかじめわかってるなら苦労しないっての
大規模なプログラムでそんな恵まれた状況は例外的だよ
482デフォルトの名無しさん
2016/04/18(月) 20:57:42.92ID:IBBVu28x 専用ゲーム機上のゲームだよ。
リソースが逼迫したら何を優先するかの戦略も含めてほぼ理想的なgiven conditionだろうに。
ユーザーの行動による不確定性も全てコントロール下にあるだろうに。
リソースが逼迫したら何を優先するかの戦略も含めてほぼ理想的なgiven conditionだろうに。
ユーザーの行動による不確定性も全てコントロール下にあるだろうに。
483デフォルトの名無しさん
2016/04/18(月) 21:13:59.16ID:RPQ9NKJO >>482 専用ゲーム機と普通のPCの1アプリケーションとで何が違うのか。mallocも使わないってこと?
NoGC, 各GCでメモリ空間がどう使われるかを視覚化
ttps://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/
黒: 未使用
灰: 確保
緑: 読み込み
黄: 書き込み
赤: GC用のアクセス(参照カウンタ、マーク用ビットetc)
緑と黄は時間経過で退色していく
メモリフラグメンテーションという観点から見ると、コピー型GCが綺麗。
NoGC, 各GCでメモリ空間がどう使われるかを視覚化
ttps://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/
黒: 未使用
灰: 確保
緑: 読み込み
黄: 書き込み
赤: GC用のアクセス(参照カウンタ、マーク用ビットetc)
緑と黄は時間経過で退色していく
メモリフラグメンテーションという観点から見ると、コピー型GCが綺麗。
484デフォルトの名無しさん
2016/04/18(月) 21:15:59.31ID:3yZKjOEp まぁテトリスとかならその程度の理解でいいんじゃない?w
485デフォルトの名無しさん
2016/04/18(月) 21:33:24.92ID:kcE0qDSU Javaの寿命管理APIは最強ですな。
486デフォルトの名無しさん
2016/04/18(月) 21:49:39.41ID:9yQABY6F487デフォルトの名無しさん
2016/04/18(月) 21:56:15.95ID:IBBVu28x 普通のmallocで足りるならそれでもいいけど。
基本メモリ容量ギリギリまで使うから、最初に描画、ゲーム内部状態、音声、ディスクキャッシュなどでどのくらい使うか決めておく。
終始一貫して静的に決めるのが楽だけど、場合によっては場面ごとに配分を切り替えたりする。
で、例えば広いマップ上を自由に動き回るようなゲームだと、マップを複数のパーツに分割して、詳細モデルから簡易モデルまで用意する。
基本メモリ容量ギリギリまで使うから、最初に描画、ゲーム内部状態、音声、ディスクキャッシュなどでどのくらい使うか決めておく。
終始一貫して静的に決めるのが楽だけど、場合によっては場面ごとに配分を切り替えたりする。
で、例えば広いマップ上を自由に動き回るようなゲームだと、マップを複数のパーツに分割して、詳細モデルから簡易モデルまで用意する。
488デフォルトの名無しさん
2016/04/18(月) 22:12:01.61ID:3yZKjOEp ゲームプログラムとかならメモリ確保は直接システムコール呼び出して
ページ単位でアロケートするのが定石
必要ならmspaceとかインスタンスベースのヒープを自分で作る
ページ単位でアロケートするのが定石
必要ならmspaceとかインスタンスベースのヒープを自分で作る
489デフォルトの名無しさん
2016/04/19(火) 01:49:46.30ID:KVIhh3Hm 使用できるメモリのサイズも空きメモリのサイズも最初から分かってて、ユーザーからの入力も限られてて、
そいつら全部自分で管理できる「恵まれた」環境でしか通用しないアプローチだよなそれ。
そいつら全部自分で管理できる「恵まれた」環境でしか通用しないアプローチだよなそれ。
490デフォルトの名無しさん
2016/04/19(火) 01:58:46.65ID:fq3yh1do レーシングゲームは出てくる車が決まっていてコースも決まっているから。
491デフォルトの名無しさん
2016/04/19(火) 08:28:57.71ID:YcewE61x 昨今はレースゲームでも汎用的なゲームエンジン使うことが多いから
その場合事前に寿命が決まってる前提の作りにはしていないと思うぞ
GDCとかGame Gemとかでも昔からフラグメンテーション対策を含む
メモリ管理の手法はいろいろ議論されているから調べてみるとよろし
その場合事前に寿命が決まってる前提の作りにはしていないと思うぞ
GDCとかGame Gemとかでも昔からフラグメンテーション対策を含む
メモリ管理の手法はいろいろ議論されているから調べてみるとよろし
492デフォルトの名無しさん
2016/04/20(水) 12:56:58.01ID:r07pzD8i493デフォルトの名無しさん
2016/04/20(水) 13:09:41.53ID:DLw9rf+F494デフォルトの名無しさん
2016/04/20(水) 19:22:46.02ID:bj66dBvK >>493
フラグメンテーションの話だっての
フラグメンテーションの話だっての
495デフォルトの名無しさん
2016/04/20(水) 19:58:58.01ID:CuR1I1mj やり手のゲーム系の方たちに、逆らうようなことは・・・・
496デフォルトの名無しさん
2016/04/21(木) 01:20:25.83ID:jf1w54Av497デフォルトの名無しさん
2016/04/21(木) 02:16:29.96ID:G+xv7xqn >>496
どうとでもなるって?
へーじゃあ試させてもらうわ
GDC 2016でもこういう講演があった
http://schedule.gdconf.com/session/building-a-low-fragmentation-memory-system-for-64-bit-games
64bitならなぜフラグメンテーションが軽減できるか説明してもらおうか?
物理メモリが多いからじゃないからな
あればあるだけメモリ使うのがゲームなのでメモリに余裕があるわけじゃない
どうとでもなるって?
へーじゃあ試させてもらうわ
GDC 2016でもこういう講演があった
http://schedule.gdconf.com/session/building-a-low-fragmentation-memory-system-for-64-bit-games
64bitならなぜフラグメンテーションが軽減できるか説明してもらおうか?
物理メモリが多いからじゃないからな
あればあるだけメモリ使うのがゲームなのでメモリに余裕があるわけじゃない
498デフォルトの名無しさん
2016/04/21(木) 11:32:02.27ID:EjzxVVPK ゲーム機含む組み込み系は結果が不確定な動的メモリー確保なんかしないのが鉄板(しようとする奴は未熟な馬鹿)だったが
PCと合わせて組み込み機器もスペックが潤沢になって富豪的プログラムが一般的になってきたからね
無知ゆえ聞きたいんだが
最近のゲームソフトやら>>497やらってどういうGC使ってるの?
PCと合わせて組み込み機器もスペックが潤沢になって富豪的プログラムが一般的になってきたからね
無知ゆえ聞きたいんだが
最近のゲームソフトやら>>497やらってどういうGC使ってるの?
499デフォルトの名無しさん
2016/04/21(木) 13:09:31.92ID:pog3nPgL ゲームだって組込みだって今どき動的メモリー確保しないなんて化石みたいな発想が通るわけないだろ
かといって普通のGCは問題外
賢いメモリアロケーションをするしかないんだよ
>>497は「こんなすごい講演するぞ」って言う宣伝だけだけど中身はどこにあるの?
かといって普通のGCは問題外
賢いメモリアロケーションをするしかないんだよ
>>497は「こんなすごい講演するぞ」って言う宣伝だけだけど中身はどこにあるの?
500デフォルトの名無しさん
2016/04/21(木) 16:14:15.43ID:lEi5GQja >>497
MMUが付いているから
物理メモリがフラグメンテーションすることは、ある程度これで防げる
しかもハードウェアの機能だから高速だし、勝手にやってくれるから素晴らしい
速度が重要なゲームでは、これは有り難い
ソフト的なアプローチでこれ以上の細工は遅くなるだけで効果が薄い
問題は論理アドレスの方
32bit空間だと例え物理メモリが余っていても
論理アドレスがフラグメンテーションを起こして連続したメモリを確保できなくなる
物理アドレスが枯渇するよりもさきに、そちらの方が問題になることが多い
64bitだと、これが防げる
MMUが付いているから
物理メモリがフラグメンテーションすることは、ある程度これで防げる
しかもハードウェアの機能だから高速だし、勝手にやってくれるから素晴らしい
速度が重要なゲームでは、これは有り難い
ソフト的なアプローチでこれ以上の細工は遅くなるだけで効果が薄い
問題は論理アドレスの方
32bit空間だと例え物理メモリが余っていても
論理アドレスがフラグメンテーションを起こして連続したメモリを確保できなくなる
物理アドレスが枯渇するよりもさきに、そちらの方が問題になることが多い
64bitだと、これが防げる
501デフォルトの名無しさん
2016/04/21(木) 16:37:13.61ID:lEi5GQja 各ゲーム機の事情は知らないが
PCで有れば、64bitプロセスは、論理アドレスの空間が256TB(48bit)もある
ゲーム機も似たようなものだろう
256TBもの物理メモリを積んだPCやゲーム機は存在していないし
例え論理アドレスが激しくラグメンテーションを起こしても
256TBもの論理アドレス空間を使い切るという事態は考えなくてよい
つまり、64bitプロセスなら、論理アドレスの心配はしなくてよい
一方で、物理アドレスのフラグメンテーションはMMUに任せておけばよい
これはハードウェアで自動で行われるし、とても高速
その余計にソフトウェア的アプローチで頑張ってみたところで
多少物理メモリのフラグメンテーションは改善されるかもしれないが
徒労というかなんというか、労力に見合わないし
しかも遅くなるのでゲームには向いていないし、やらなくてよい
物理アドレスは自分だけが使っているわけではなく、OSを含めたほかのプロセスも使っているので
自分のプロセスが使っている物理メモリだけフラグメンテーションを解消しようと
コンパクションするのも何か完璧感が無いし
自分のプロセス内だけで考えても、外部ライブラリやXBoxならDirectXが使用している物理メモリの
フラグメンテーションは手が出せないので解消しようがない、やはりやるだけ徒労
自分の管理出来る部分だけ物理メモリのコンパクションをかけても
「これで計算上、必ずあと200MBの物理メモリを使用できる筈」とかといった保証はどこにもない
理由は、外部のライブラリ内での物理メモリの使用状況が分からないし、手が出せないから
とにかく徒労であり、MMUに任せておけばよい
PCで有れば、64bitプロセスは、論理アドレスの空間が256TB(48bit)もある
ゲーム機も似たようなものだろう
256TBもの物理メモリを積んだPCやゲーム機は存在していないし
例え論理アドレスが激しくラグメンテーションを起こしても
256TBもの論理アドレス空間を使い切るという事態は考えなくてよい
つまり、64bitプロセスなら、論理アドレスの心配はしなくてよい
一方で、物理アドレスのフラグメンテーションはMMUに任せておけばよい
これはハードウェアで自動で行われるし、とても高速
その余計にソフトウェア的アプローチで頑張ってみたところで
多少物理メモリのフラグメンテーションは改善されるかもしれないが
徒労というかなんというか、労力に見合わないし
しかも遅くなるのでゲームには向いていないし、やらなくてよい
物理アドレスは自分だけが使っているわけではなく、OSを含めたほかのプロセスも使っているので
自分のプロセスが使っている物理メモリだけフラグメンテーションを解消しようと
コンパクションするのも何か完璧感が無いし
自分のプロセス内だけで考えても、外部ライブラリやXBoxならDirectXが使用している物理メモリの
フラグメンテーションは手が出せないので解消しようがない、やはりやるだけ徒労
自分の管理出来る部分だけ物理メモリのコンパクションをかけても
「これで計算上、必ずあと200MBの物理メモリを使用できる筈」とかといった保証はどこにもない
理由は、外部のライブラリ内での物理メモリの使用状況が分からないし、手が出せないから
とにかく徒労であり、MMUに任せておけばよい
502デフォルトの名無しさん
2016/04/21(木) 17:22:28.74ID:7dcTEyv0 ただの物理メモリ不足の話がなんでと思ってしまった
swapはじまったら、fpsなゲームはどうなるんでしょうね
swapはじまったら、fpsなゲームはどうなるんでしょうね
503デフォルトの名無しさん
2016/04/21(木) 19:18:25.46ID:zEEe/DNn 論理アドレスが64bitだったらフラグメンテーション対策なんていらんということ?いや自分もそうは思うんだが。
上の方で「専用ゲーム機開発ならフラグメンテーション対策も行うのが常識!」みたいに主張してる人がいて、
それって自作のmalloc相当のアロケータ作るってことだよね?と思ったんだが、
メモリ節約術とごっちゃにしてる人もいてわけが分からなくなってきた。
上の方で「専用ゲーム機開発ならフラグメンテーション対策も行うのが常識!」みたいに主張してる人がいて、
それって自作のmalloc相当のアロケータ作るってことだよね?と思ったんだが、
メモリ節約術とごっちゃにしてる人もいてわけが分からなくなってきた。
504デフォルトの名無しさん
2016/04/21(木) 22:14:27.41ID:WHT47icf なんで馬鹿に限って長文書きたがるんだろうか
505デフォルトの名無しさん
2016/04/22(金) 08:58:47.78ID:imh5rD9T506デフォルトの名無しさん
2016/04/22(金) 11:30:03.69ID:+Z1ZyILi わかってなさそうな方がそれっぽいこと・・・・
507デフォルトの名無しさん
2016/04/22(金) 12:23:02.13ID:UzNl+aCx わかってる方は完結に書いてみればいい
508デフォルトの名無しさん
2016/04/22(金) 15:49:44.48ID:+Z1ZyILi 学校の先生にそう教わったんですね
509デフォルトの名無しさん
2016/04/22(金) 19:23:46.16ID:cAq2nbH2 用途ごとにセグメント分けて使い回すのが無難じゃないの
オブジェクトの数が足りなくなったら透明でいいのよ
オブジェクトの数が足りなくなったら透明でいいのよ
510デフォルトの名無しさん
2016/04/22(金) 20:32:21.23ID:1FeuO5Gj 結局のところ、物理アドレスのフラグメンテーションはMMUが勝手になんとかしてくれるからあまり問題にならない
しかし論理アドレスの方は何にもしてくれないのでフラグメンテーション起こして
連続したアドレスが確保出来なくなると、それで終わり、どうしようもない
32bitプロセスだと4GBしか空間がないから、まれに問題になる
64bitプロセスだと無尽蔵に空間があるから問題になることは現状ありえない
しかし論理アドレスの方は何にもしてくれないのでフラグメンテーション起こして
連続したアドレスが確保出来なくなると、それで終わり、どうしようもない
32bitプロセスだと4GBしか空間がないから、まれに問題になる
64bitプロセスだと無尽蔵に空間があるから問題になることは現状ありえない
511デフォルトの名無しさん
2016/04/22(金) 23:54:45.31ID:imh5rD9T >>510
> 結局のところ、物理アドレスのフラグメンテーションはMMUが勝手になんとかしてくれるからあまり問題にならない
MMUってのはアドレス変換するハードウェア
勝手に物理メモリを仮想メモリにマップしたりはしない
それをやるのはOS
> 結局のところ、物理アドレスのフラグメンテーションはMMUが勝手になんとかしてくれるからあまり問題にならない
MMUってのはアドレス変換するハードウェア
勝手に物理メモリを仮想メモリにマップしたりはしない
それをやるのはOS
512デフォルトの名無しさん
2016/04/23(土) 00:19:34.35ID:43LRl8T1 そもそも、ページサイズより粒度が細かいフラグメンテーションにはMMUはなんの効果もないしな。
513デフォルトの名無しさん
2016/04/23(土) 05:06:22.41ID:TwuNXQH0 autorelease()呼んだらコアダンプ糞osがwww
514デフォルトの名無しさん
2016/04/23(土) 18:49:46.90ID:RPK9BpXO 小さな粒度のフラグメンテーションは気にする必要ない
4KBならUTF-16で2000文字ぐらいしかない
32bitビットマップなら32x32ほとのサイズ
4KBならUTF-16で2000文字ぐらいしかない
32bitビットマップなら32x32ほとのサイズ
515デフォルトの名無しさん
2016/04/23(土) 20:33:25.39ID:PodTlhvX キャッシュヒット率が落ちそう(コナミ)
516デフォルトの名無しさん
2016/04/24(日) 01:18:30.93ID:9YSuZOIq517デフォルトの名無しさん
2016/04/24(日) 01:38:34.87ID:ai61/62A518デフォルトの名無しさん
2016/04/24(日) 08:38:51.73ID:65va2BTL メモリー512バイトでどうやってヒープを使えと。
519デフォルトの名無しさん
2016/04/24(日) 09:31:32.99ID:HSA/nLEW ネイティブコードが必要な場面で中途半端に GC に頼るのが問題なのかもしれないが、もうネイティブコードが必要な戦場は限られた一部だけになってて、主戦場では GC は大前提の技術なんだから必要ないとか言われましてもですわ。
520デフォルトの名無しさん
2016/04/24(日) 10:14:15.47ID:W23a3TIA ページがスカスカになっても大丈夫
1ページ4KBとかだからね、十分小さい
32x32-32bitビットマップより小さい
最近のゲームで使われるような大きなサイズのテクスチャなど
でかいサイズを確保する場合はどうせ新しいページが割り当てられるし
小さなサイズを確保する場合は、スカスカになったページから空いているところを探して割り当てられるので
問題ない
1ページ4KBとかだからね、十分小さい
32x32-32bitビットマップより小さい
最近のゲームで使われるような大きなサイズのテクスチャなど
でかいサイズを確保する場合はどうせ新しいページが割り当てられるし
小さなサイズを確保する場合は、スカスカになったページから空いているところを探して割り当てられるので
問題ない
521デフォルトの名無しさん
2016/04/24(日) 10:14:59.78ID:TFb7efu7 androidしか知りませんみたいな事言われてもな
522デフォルトの名無しさん
2016/04/24(日) 10:27:10.54ID:W23a3TIA 物理アドレスはページサイズで切り売りされるので
元から連続しているアドレスは必要ではなく
フラグメンテーションは問題にならない
連続したアドレスが必要になるのは論理アドレスのほうであり
32bitプロセスでは4GBしか空間がないから問題になることがある
64bitプロセスであれば現状問題にならない
元から連続しているアドレスは必要ではなく
フラグメンテーションは問題にならない
連続したアドレスが必要になるのは論理アドレスのほうであり
32bitプロセスでは4GBしか空間がないから問題になることがある
64bitプロセスであれば現状問題にならない
523デフォルトの名無しさん
2016/04/24(日) 10:37:41.02ID:65va2BTL 実はQtでデーモン作って動かしてるのだが、もう半年以上動き続けてる。
まさかこんなに問題が起きないとは。
案ずるより産むがやすしですぞ皆の衆。
まさかこんなに問題が起きないとは。
案ずるより産むがやすしですぞ皆の衆。
524デフォルトの名無しさん
2016/04/24(日) 10:58:37.83ID:65va2BTL Qtで作ったのは一日ででっち上げる為だったのだが、意外なことに堅牢に動き続けてる。
525デフォルトの名無しさん
2016/04/24(日) 12:08:49.17ID:HSA/nLEW Qt でデーモン?
GUI が必要なデーモン?
GUI が必要なデーモン?
526デフォルトの名無しさん
2016/04/24(日) 12:13:06.27ID:ynYywbEh >>525
デーモンは通常フォアグラウンドじゃないのでUIを持ちませんぜ旦那。
デーモンは通常フォアグラウンドじゃないのでUIを持ちませんぜ旦那。
527デフォルトの名無しさん
2016/04/24(日) 12:25:33.24ID:HSA/nLEW ならば何に何故どのように Qt を使うのだ?
528デフォルトの名無しさん
2016/04/24(日) 12:45:58.38ID:TFb7efu7529デフォルトの名無しさん
2016/04/24(日) 13:02:46.55ID:ynYywbEh 等と意味不明な供述をしており。
530デフォルトの名無しさん
2016/04/24(日) 14:52:01.10ID:fu8W/E1c531デフォルトの名無しさん
2016/04/24(日) 14:52:56.88ID:UKiBgwvV daemonじゃなくてdemonなんじゃない?
デスクトップマスコット的な
デスクトップマスコット的な
532デフォルトの名無しさん
2016/04/24(日) 14:59:36.53ID:ynYywbEh 俺が作ったのはウェブソケットによってサービスを提供するプログラムだ。
エンジンエックスをリバースプロキシとした。
このプログラムは常時数千の接続から大量のリクエストを受け付ける。
接続してくるクライアントは専用に作られQtで書かれている。
大量のリクエストはそれぞれ複数のデータベース検索を引き起こす。
こう書くと結構負荷が高そうなのだが、さすがC++、ほとんど塵程度の負荷しかなく、
当然のことながらリプライに遅延もない。
そこで案ずるよりも生むが易しというわけ。
Qtは出自からしてGUIのためのライブラリではあるのだが、GUIが無いと使えないというわけでもない。
むしろボリュームからすれば、GUI以外の方がより大きい。
そして、半年動きっぱなしで大丈夫ことからして、実は断片化は気にしなくても
良さそうだ。
エンジンエックスをリバースプロキシとした。
このプログラムは常時数千の接続から大量のリクエストを受け付ける。
接続してくるクライアントは専用に作られQtで書かれている。
大量のリクエストはそれぞれ複数のデータベース検索を引き起こす。
こう書くと結構負荷が高そうなのだが、さすがC++、ほとんど塵程度の負荷しかなく、
当然のことながらリプライに遅延もない。
そこで案ずるよりも生むが易しというわけ。
Qtは出自からしてGUIのためのライブラリではあるのだが、GUIが無いと使えないというわけでもない。
むしろボリュームからすれば、GUI以外の方がより大きい。
そして、半年動きっぱなしで大丈夫ことからして、実は断片化は気にしなくても
良さそうだ。
533デフォルトの名無しさん
2016/04/24(日) 15:05:02.69ID:ynYywbEh ちなみにQt使ってなかったら一日でサービスを書き上げることは不可能だっただろう。
Qtは、その他のGUIライブラリ同様バグが多いのだが、GUIを抜いてみるとどうだろう、
意外なほどに堅牢なのだ。
何しろもう半年動きっぱなし。
俺はこの経験から一つの予測を立てた。
これからのサービスは、C++で書かれるようになる可能性がある。
何しろ圧倒的に速い。
一つのリクエストに対するレスポンスが速いため、平均負荷率が圧倒的に下がるのだ。
この事実に世の中が気づくにはそう時間がかからないはず。
そしてsystemdがこの動きを促進するはず。
ちなみにWindowsで書いてLinuxで動かしてます。
Qtは、その他のGUIライブラリ同様バグが多いのだが、GUIを抜いてみるとどうだろう、
意外なほどに堅牢なのだ。
何しろもう半年動きっぱなし。
俺はこの経験から一つの予測を立てた。
これからのサービスは、C++で書かれるようになる可能性がある。
何しろ圧倒的に速い。
一つのリクエストに対するレスポンスが速いため、平均負荷率が圧倒的に下がるのだ。
この事実に世の中が気づくにはそう時間がかからないはず。
そしてsystemdがこの動きを促進するはず。
ちなみにWindowsで書いてLinuxで動かしてます。
534デフォルトの名無しさん
2016/04/24(日) 15:05:44.58ID:ai61/62A 一例をもって一般化はできないだろ
535デフォルトの名無しさん
2016/04/24(日) 15:05:53.54ID:TFb7efu7536デフォルトの名無しさん
2016/04/24(日) 15:08:01.90ID:ynYywbEh Windowsで書いてLinuxで動かすことに、systemdは大いに貢献した。
従来のデーモンの作り方では、いろいろ煩雑なことがありすぎ、時間の制限から難しかっただろう。
Qt+systemd、この直観的な選択は大成功であった。
従来のデーモンの作り方では、いろいろ煩雑なことがありすぎ、時間の制限から難しかっただろう。
Qt+systemd、この直観的な選択は大成功であった。
537デフォルトの名無しさん
2016/04/24(日) 15:11:43.89ID:ynYywbEh Qtのバグの多くは、複数の環境に対応するため、その差異によって引き起こされているという結論を得た。
systemd万歳!
systemd万歳!
538デフォルトの名無しさん
2016/04/24(日) 15:16:24.95ID:ynYywbEh 更にもう一つヒントがある。
複数のクライアントから多様なリクエストがあるとはいえ、一つのプログラムが擁する
データ構造などたかが知れているのだ。
クライアントAのリクエストにこたえるため使用された記憶空間は、解放されたのち
クライアントBのためにそのまま使われる可能性があるのだ。
そういったわけで断片化は気にする必要が無い。
若者よ、案ずるより産むが易しですぞ。
複数のクライアントから多様なリクエストがあるとはいえ、一つのプログラムが擁する
データ構造などたかが知れているのだ。
クライアントAのリクエストにこたえるため使用された記憶空間は、解放されたのち
クライアントBのためにそのまま使われる可能性があるのだ。
そういったわけで断片化は気にする必要が無い。
若者よ、案ずるより産むが易しですぞ。
539デフォルトの名無しさん
2016/04/24(日) 15:28:56.74ID:u6qUQj/U ねえ訳分かんないんだけど
本人以外で理解してる人要るの?
本人以外で理解してる人要るの?
540デフォルトの名無しさん
2016/04/24(日) 15:55:24.75ID:fu8W/E1c むやみに連投してる奴はたいていスルーでok
541デフォルトの名無しさん
2016/04/24(日) 20:02:15.39ID:ynYywbEh むしろ、わからないのに何故、一生懸命主張していたのかと。
542デフォルトの名無しさん
2016/04/24(日) 20:22:44.80ID:fcfJojCV 誰と戦っているんだろう…
543デフォルトの名無しさん
2016/04/24(日) 22:39:17.85ID:WrdDgWl7 マークスイープでメモリリークってどうやって起きるんだ?
初心者だから優しく説明してほしい
初心者だから優しく説明してほしい
544デフォルトの名無しさん
2016/04/25(月) 01:16:56.77ID:/Pmm49fe 狭義の意味では起きない
もし君が気付かない間にオブジェクトへの参照を保持していたらどんなGCだろうが解放されない
それをリークというならリークする
もし君が気付かない間にオブジェクトへの参照を保持していたらどんなGCだろうが解放されない
それをリークというならリークする
545デフォルトの名無しさん
2016/04/25(月) 13:44:57.25ID:HSarKqaj 言い換えればダングリングポインタが発生しない
それだけ
それだけ
546デフォルトの名無しさん
2016/04/25(月) 14:51:13.10ID:0xpbBk2N マーク&スイープでもポインタの型情報を記録してないとリークしまくる
無関係な数値をアドレス参照と勘違いしてマーク→未開放
某言語ではこのために巨大なメモリブロックが開放されない
無関係な数値をアドレス参照と勘違いしてマーク→未開放
某言語ではこのために巨大なメモリブロックが開放されない
547デフォルトの名無しさん
2016/04/25(月) 20:35:07.72ID:4DDlKiNG >>543
どこからマークを始めるかが問題
どこからマークを始めるかが問題
548デフォルトの名無しさん
2016/04/29(金) 18:58:56.34ID:I1ppYkAy549デフォルトの名無しさん
2016/04/29(金) 22:46:31.85ID:wZxrhoKH C++/CLIはデストラクタが呼ばれるだけで、managedメモリの解放がGC任せなのは変わらんよ。
550デフォルトの名無しさん
2016/05/01(日) 07:57:30.30ID:tKi6j9CT 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
w
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
w
551デフォルトの名無しさん
2016/05/01(日) 09:11:45.10ID:qHyjCjkk 無視リストに追加と
552デフォルトの名無しさん
2016/05/02(月) 21:54:41.51ID:KYdaomRZ GCCは失敗、Clangを使え。
553デフォルトの名無しさん
2016/05/02(月) 22:21:36.97ID:btgv3pKW うるせーバーカ
554デフォルトの名無しさん
2016/05/04(水) 17:42:43.75ID:M8+arjAJ gccは失敗。
555デフォルトの名無しさん
2016/05/27(金) 12:06:01.84ID:FwT+WNvC 良スレ発見した。Windowsは32bitで十分だな。32bitでもPAEで4GB超の
メモリ認識するし、仮想メモリは4GBのままだが、AWEを使うことにより
バンク切り替え的にメモリウインドウを切り替えられる
メモリ認識するし、仮想メモリは4GBのままだが、AWEを使うことにより
バンク切り替え的にメモリウインドウを切り替えられる
556デフォルトの名無しさん
2016/05/27(金) 19:30:30.19ID:hSijlNU2 >>555
アプリはよくてもカーネルはつらい
アプリはよくてもカーネルはつらい
557デフォルトの名無しさん
2016/05/28(土) 04:39:26.17ID:rTGB9SNh メモリーは俺が確保してやる、任せろ。
558デフォルトの名無しさん
2016/05/29(日) 07:51:44.19ID:Ai+IvVh7 おう、この手は絶対、絶対に、死んでも離さねぇ!!
559デフォルトの名無しさん
2016/05/29(日) 11:50:15.87ID:9WWbP5OA OSに載った気持ちでいなさい
560デフォルトの名無しさん
2016/05/31(火) 22:56:21.68ID:mtPUDASJ >>1みたいなやつは
研究室にヒキって、社会に出たことないんやろ
おまえ、本気の糞コードで書かれたペチプ〜とか見たらチビるで
あんなんに加えてメモリ管理なんてやらせたら
それこそHELLO END OF THE WORLD
この世の終わりですわ
研究室にヒキって、社会に出たことないんやろ
おまえ、本気の糞コードで書かれたペチプ〜とか見たらチビるで
あんなんに加えてメモリ管理なんてやらせたら
それこそHELLO END OF THE WORLD
この世の終わりですわ
561デフォルトの名無しさん
2016/06/07(火) 12:20:18.65ID:4vppD7oq >>558
死んだら離せw
死んだら離せw
562デフォルトの名無しさん
2016/06/12(日) 09:40:01.67ID:mfUrI2Z0 死後硬直ですね
563デフォルトの名無しさん
2016/06/18(土) 23:15:40.44ID:03AgrRUX 指摘してるレスがなかったので言っとくが
循環参照は参照カウント方式+Cycle Collectorでも回収できるから
GCは必須じゃないぞ
興味があるならBacon Cycle Collectorで調べてみろ
循環参照は参照カウント方式+Cycle Collectorでも回収できるから
GCは必須じゃないぞ
興味があるならBacon Cycle Collectorで調べてみろ
564デフォルトの名無しさん
2016/06/18(土) 23:22:46.70ID:/B2fY0/K 学生の頃は循環参照できないことに困ってたけど、今となっては何時
循環参照が必要になるかさえ思い出せんな。
循環参照が必要になるかさえ思い出せんな。
565デフォルトの名無しさん
2016/06/19(日) 21:38:00.28ID:evh9vaek 双方向リスト構造
566デフォルトの名無しさん
2016/06/19(日) 22:17:16.01ID:ao4WLgfX567デフォルトの名無しさん
2016/06/20(月) 01:16:50.71ID:30YoNw6z (コンパクションしてくれるんだろうか)
568デフォルトの名無しさん
2016/06/22(水) 08:52:46.04ID:I9Ep4uZo vmが諸悪の根源な気がしてきた
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- X「小学館は漫画を下に見てる!下に見てる!」
- 千晴
- 青銅聖闘士のパンチは音速←わかる 白銀聖闘士はその数倍←まぁわかる 黄金聖闘士は光速←は?
- 非日常すぎるエロ漫画は抜けないの法則
- 4時だから窓から4回ちんこ出した
- クマどもが冬眠拒否
