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
618デフォルトの名無しさん
2016/11/19(土) 08:38:51.71ID:eBLDMII7 開きっぱはなんでダメなん?
619デフォルトの名無しさん
2016/11/19(土) 08:52:00.55ID:YtkNE2sc flushすればいいな
620デフォルトの名無しさん
2016/11/19(土) 10:16:22.36ID:HaGDkE41621デフォルトの名無しさん
2016/11/19(土) 14:20:53.96ID:YtkNE2sc >>620
それは開きっぱなしが問題なんじゃなくてflushしてないことが問題なだけで見当違い
それは開きっぱなしが問題なんじゃなくてflushしてないことが問題なだけで見当違い
622デフォルトの名無しさん
2016/11/19(土) 14:29:51.71ID:HaGDkE41623デフォルトの名無しさん
2016/11/19(土) 14:34:26.96ID:WWFUnGVk とこのように、相手を互いに見当違いであると罵り合うのであった
しかし、それは正しい
両者とも正しい
しかし、それは正しい
両者とも正しい
624デフォルトの名無しさん
2016/11/19(土) 15:37:17.31ID:O7mQP4/b スコープの話してるのに flush とか頭わいてるだろ
625デフォルトの名無しさん
2016/11/19(土) 21:51:13.35ID:WZ8TOo4I null安全をアピールしてる人間はObjCerから見ると補助輪付き自転車を渡してきてこれ安全だから絶対に乗れよと言ってくる頭おかしいおじさんにしか見えない
Swift移行がこじれるだけだから黙っといて欲しい
Swift移行がこじれるだけだから黙っといて欲しい
626デフォルトの名無しさん
2016/11/21(月) 14:59:21.88ID:qSFgYSXv 浜矩子・著
『アホノミクス完全崩壊に備えよ』
『どアホノミクスへ最後の通告』
『みんなで行こうアホノミクスの向こう側』
抑制のない成長に基づく経済政策は終焉
日本国民はどう対処すればいいのか。
新しい政権は民意を反映し、
食糧、住宅、健康、教育、最後に防衛です。
国民の意志を裏切ることは、
極端な場合、自殺や殺人にまでつながります。
民衆の指導者は
職業的政治家ではない人々から見つかるのです。
世界平和の脅威は、
イスラエル、イラン、アメリカです。
イスラエルの役割は跪いて、
パレスチナに許しを請うことです。
アメリカによる他国の虐待に
反対の声を上げなければなりません。
彼らは今世紀(21世紀)を
この帝国が出来上がるアメリカの世紀と呼ぶ。
しかし、そうはならないでしょう。
彼らが世界中に‘民主的’制度を確立したい
という衝動(世界を支配する)をコントロール
するのは、マイト レーヤの任務です。
非常に間もなく
マイト レーヤをテレビで見るでしょう。
彼は「匿名」で働いております。
『アホノミクス完全崩壊に備えよ』
『どアホノミクスへ最後の通告』
『みんなで行こうアホノミクスの向こう側』
抑制のない成長に基づく経済政策は終焉
日本国民はどう対処すればいいのか。
新しい政権は民意を反映し、
食糧、住宅、健康、教育、最後に防衛です。
国民の意志を裏切ることは、
極端な場合、自殺や殺人にまでつながります。
民衆の指導者は
職業的政治家ではない人々から見つかるのです。
世界平和の脅威は、
イスラエル、イラン、アメリカです。
イスラエルの役割は跪いて、
パレスチナに許しを請うことです。
アメリカによる他国の虐待に
反対の声を上げなければなりません。
彼らは今世紀(21世紀)を
この帝国が出来上がるアメリカの世紀と呼ぶ。
しかし、そうはならないでしょう。
彼らが世界中に‘民主的’制度を確立したい
という衝動(世界を支配する)をコントロール
するのは、マイト レーヤの任務です。
非常に間もなく
マイト レーヤをテレビで見るでしょう。
彼は「匿名」で働いております。
627デフォルトの名無しさん
2016/12/08(木) 09:10:56.35ID:FEYStmIt 小規模ならGCのメリットは大きいのかもしれないが、大規模または大量にメモリを食うプログラムにはGCは向いてないのではないか。
あんまり例を知らないが、JAVAで動くマインクラフトのデバッグ画面でメモリ使用量みたら、めまぐるしく増加して一気に減ってるのみてびっくりした。
あんまり例を知らないが、JAVAで動くマインクラフトのデバッグ画面でメモリ使用量みたら、めまぐるしく増加して一気に減ってるのみてびっくりした。
628デフォルトの名無しさん
2016/12/13(火) 13:02:48.84ID:XUF2n21y GC周りに付いて書かれたネットの記事読んできたけど
オブジェクトが生成されては次々と死んでいき
生きてるオブジェクトより死んだオブジェクトが多い場合の方が速くなるっぽい
>>627
そう考えると長命のオブジェクトが大量にある方が(性能的には)問題だが
マインクラフトがそれかは知らない
オブジェクトが生成されては次々と死んでいき
生きてるオブジェクトより死んだオブジェクトが多い場合の方が速くなるっぽい
>>627
そう考えると長命のオブジェクトが大量にある方が(性能的には)問題だが
マインクラフトがそれかは知らない
629デフォルトの名無しさん
2016/12/15(木) 23:33:53.51ID:Z/98FfuD630デフォルトの名無しさん
2017/01/18(水) 11:38:56.79ID:A+XqqRn6 漏れたときの調査が大変
安心してると痛い目にあう
安心してると痛い目にあう
631デフォルトの名無しさん
2017/01/20(金) 16:23:16.03ID:4Q3o1w03 参照カウントは循環参照の問題が起こるだけじゃなくて
意外と遅いって聞くけどマジで?
・メモリをOSから直接確保・解放するのは意外と遅い
・マルチスレッドで参照カウントを使うにはアトミックな操作が必要
・カウントを自動化すると不必要な参照カウントが起こる
とかで
対してトレーシングGCの弱点は回収時に止まる時間が長いところか
その対策か、V8やOracle JavaにはGCの時間を制限する機能があるみたいだが
それってどうなんだ?
意外と遅いって聞くけどマジで?
・メモリをOSから直接確保・解放するのは意外と遅い
・マルチスレッドで参照カウントを使うにはアトミックな操作が必要
・カウントを自動化すると不必要な参照カウントが起こる
とかで
対してトレーシングGCの弱点は回収時に止まる時間が長いところか
その対策か、V8やOracle JavaにはGCの時間を制限する機能があるみたいだが
それってどうなんだ?
632デフォルトの名無しさん
2017/01/20(金) 23:17:39.79ID:2XlTkpSB まじ
633デフォルトの名無しさん
2017/01/22(日) 15:00:56.26ID:lyHWqZIh ^ナマポ
634デフォルトの名無しさん
2017/01/22(日) 18:20:35.13ID:CvVvUjG5 ストップ・ザ・ワールドの問題さえなくなればGCが最強ってこと?
635デフォルトの名無しさん
2017/01/22(日) 18:44:59.67ID:2ikRDhsq >>634
フルGCの危険があるという点で最強になりえない
フルGCの危険があるという点で最強になりえない
636デフォルトの名無しさん
2017/02/20(月) 19:16:44.90ID:NKdiRgAe バイオハザード7は28万行のC#コードでできててビルド10秒らしい。
独自VM、独自GCだとか。
独自VM、独自GCだとか。
637デフォルトの名無しさん
2017/03/20(月) 22:46:15.84ID:USOySpAW >>636
ゲームで28万ステップって長すぎね?
ゲームで28万ステップって長すぎね?
638デフォルトの名無しさん
2017/04/01(土) 12:49:43.55ID:ZgIqHRoc639デフォルトの名無しさん
2017/05/26(金) 12:05:46.50ID:uY9cFHyF >>638
FrameGCはゲームというかRTSに特化したGCだね
・ローカルに発生したオブジェクトは溜め込んでフレームの終わりにまとめて開放する
・グローバルに結びついたオブジェクトにはカウンタGCを適用する
・フレーム毎に循環参照のチェックを少しずつ行う
ざっくりこんな感じ?
FrameGCはゲームというかRTSに特化したGCだね
・ローカルに発生したオブジェクトは溜め込んでフレームの終わりにまとめて開放する
・グローバルに結びついたオブジェクトにはカウンタGCを適用する
・フレーム毎に循環参照のチェックを少しずつ行う
ざっくりこんな感じ?
640デフォルトの名無しさん
2017/05/26(金) 20:16:13.14ID:0194UVlm 内部的にC#をC++に変換してるからC#をスクリプト的に使ってるだけで実質C++だな。当然GC・メモリアロケータ周りも身内実装。
641デフォルトの名無しさん
2017/05/26(金) 22:20:13.64ID:uY9cFHyF642デフォルトの名無しさん
2017/06/03(土) 06:38:16.81ID:MyiMvGI/ そこまでやって既存のフレームワーク使えるのって疑問が。
643デフォルトの名無しさん
2017/06/03(土) 10:06:08.23ID:sCohk93m GCがconflictするんですね判ります
644デフォルトの名無しさん
2017/09/11(月) 12:41:54.43ID:YXmvV/7e 「メモリ」+「フラグメンテーション」で検索すると色々と詳しい話が出てくるね。
645デフォルトの名無しさん
2017/09/11(月) 13:14:06.52ID:YXmvV/7e ここが分かりやすかった
ttps://www.uquest.co.jp/embedded/learning/lecture17.html
ttp://www.kaede-software.com/2015/06/post_655.html
ttps://www.uquest.co.jp/embedded/learning/lecture17.html
ttp://www.kaede-software.com/2015/06/post_655.html
646デフォルトの名無しさん
2017/09/11(月) 13:44:59.20ID:I3u+9T/v メモリのフラグメンテーションなど実質的には気にする必要は全くない
なぜなら現実のコンピュータにはMMUが付いてるから
物理メモリの連続空間が枯渇することは考えなくてもよい
あり得るとしたら32bitプロセスでの論理アドレスの連続空間の枯渇であるが
64bitプロセスにすれば問題ない
もともと論理アドレス空間が枯渇するかもしれないほどメモリを使うのなら
64bitプロセスにするのが当たり前なので・・・
というわけでメモリのフラグメンテーションは気にしなくてよい
CPUのキャッシュのヒット率を上げるとか、そういうことでなければ
なぜなら現実のコンピュータにはMMUが付いてるから
物理メモリの連続空間が枯渇することは考えなくてもよい
あり得るとしたら32bitプロセスでの論理アドレスの連続空間の枯渇であるが
64bitプロセスにすれば問題ない
もともと論理アドレス空間が枯渇するかもしれないほどメモリを使うのなら
64bitプロセスにするのが当たり前なので・・・
というわけでメモリのフラグメンテーションは気にしなくてよい
CPUのキャッシュのヒット率を上げるとか、そういうことでなければ
647デフォルトの名無しさん
2017/09/11(月) 17:53:09.29ID:P5pczjP2 そうなん?
ガベコレの回収効率が悪くなって
無駄な使用領域が増えて枯渇しやすくなるんじゃね
ガベコレの回収効率が悪くなって
無駄な使用領域が増えて枯渇しやすくなるんじゃね
648デフォルトの名無しさん
2017/09/11(月) 18:13:16.59ID:SGfZs9nE >>647
GCのアロケートサイズとページングサイズの区別もついてないアホはスルーでよろしく
GCのアロケートサイズとページングサイズの区別もついてないアホはスルーでよろしく
649デフォルトの名無しさん
2017/09/11(月) 20:33:05.66ID:I3u+9T/v 程度の問題であって
世のプログラムがフラグメンテーションなど気にせずとも
普通に動いているのを見てわかる通り、問題になってない
MMUがあるから
世のプログラムがフラグメンテーションなど気にせずとも
普通に動いているのを見てわかる通り、問題になってない
MMUがあるから
650デフォルトの名無しさん
2017/09/11(月) 21:54:05.93ID:khvQxUtn >>646
そういうぬるい環境で済むところもあればそうじゃないところもある
ゲームコンソールだと物理メモリサイズに最適化するからな
STLとかdefault allocatorで気軽に使ってヒープ汚しまくってると
そのうち物理メモリ足りなくなってページアウト
そういうぬるい環境で済むところもあればそうじゃないところもある
ゲームコンソールだと物理メモリサイズに最適化するからな
STLとかdefault allocatorで気軽に使ってヒープ汚しまくってると
そのうち物理メモリ足りなくなってページアウト
651デフォルトの名無しさん
2017/09/12(火) 10:09:32.99ID:g0xsLkF6 必ず来ると思った、その反論
しかし、稀な事例を持ち出して、どうこう言っても仕方がない
しかし、稀な事例を持ち出して、どうこう言っても仕方がない
652デフォルトの名無しさん
2017/09/12(火) 12:38:17.20ID:E3lbzyXM MMU のお陰でふらぐめんてーしょんが起きない環境の方が希だと思うが
653デフォルトの名無しさん
2017/09/12(火) 13:22:19.16ID:crCgFvVY フラグメンテーションはアドレス空間や実メモリ量が限定される環境をどううまく使うかの話だから
MMUがあって64bit空間なら平気と言われてもな
MMUがあって64bit空間なら平気と言われてもな
654デフォルトの名無しさん
2017/09/13(水) 03:53:58.25ID:TAF2DPKT そそ、複雑なプログラムって書こうと思えばいくらでも複雑化するからな。
で、簡潔で高度と思われる機能を追加していくほど難易度は指数関数的に増大するし。
で、簡潔で高度と思われる機能を追加していくほど難易度は指数関数的に増大するし。
655デフォルトの名無しさん
2017/09/13(水) 05:10:44.22ID:t818hmCa でも実際スマホアプリ作ってんのにフラグメンテーションを防ぐ為に最初に使用する分全部確保しておいて、その中で割り当てするんだーとかいって、オレオレアロケーター作ろうとする頭の悪いやつがいて困る。
逆にお前の作ったそのアロケーターの中でフラグメンテーションして枯渇するわと。
逆にお前の作ったそのアロケーターの中でフラグメンテーションして枯渇するわと。
656デフォルトの名無しさん
2017/09/13(水) 07:42:12.50ID:7O+lQKpp 組み込みなんかでよくあるそういうのは、どっちかというと最初に確保したメモリ以上を
使用しないことを保証するためにやるもんだろう。
使用しないことを保証するためにやるもんだろう。
657デフォルトの名無しさん
2017/09/13(水) 08:52:01.48ID:Vaq5SeW/ アロケータ置き換えるだけでは普通解決しないでしょ
>>655 こそが置き換えて何するのか理解できてない気がする
>>655 こそが置き換えて何するのか理解できてない気がする
658デフォルトの名無しさん
2017/09/13(水) 22:09:52.04ID:PcFMQESF むしろ一定時間を保証する(なのでサイズは固定長とかが多い)もんだろ
659デフォルトの名無しさん
2017/09/17(日) 13:06:26.21ID:S40DCpdn いくら64bitあっても設計が雑ならメモリ枯渇するでしょ
ページング方式でメモリ消費されてんだし
ページング方式でメモリ消費されてんだし
660デフォルトの名無しさん
2017/09/17(日) 13:32:06.14ID:2kxiy1Rb MMUのアドレス変換コストもタダじゃない。
TLBキャッシュ外れたら遅くなる。
TLBキャッシュ外れたら遅くなる。
661デフォルトの名無しさん
2017/09/17(日) 13:32:07.34ID:S40DCpdn 1回のメモリ取得で4kづつ消費されるわけか
662デフォルトの名無しさん
2017/09/17(日) 13:49:19.58ID:S40DCpdn ツリー状のメモリ管理するとあっという間にメモリ無くなるな
class CTree{
std::vector<CTree>;
};
とか
class CTree{
std::vector<CTree>;
};
とか
663デフォルトの名無しさん
2017/09/17(日) 14:00:55.72ID:S40DCpdn こうするとさらにメモリが消えていくな
class CTree{
std::map<std::string,CTree>;
};
class CTree{
std::map<std::string,CTree>;
};
664デフォルトの名無しさん
2017/09/17(日) 14:12:30.87ID:S40DCpdn 間違えた。
class CTree{
std::vector<CTree> m_Tree;
};
class CTree{
std::map<std::string,CTree>m_Tree;
};
で、ツリーのノード一つ毎に上は4kづつ下は8kづつメモリを消費するわけで・・・
class CTree{
std::vector<CTree> m_Tree;
};
class CTree{
std::map<std::string,CTree>m_Tree;
};
で、ツリーのノード一つ毎に上は4kづつ下は8kづつメモリを消費するわけで・・・
665デフォルトの名無しさん
2017/09/17(日) 15:23:52.56ID:iyMogwhx 一回のメモリ取得で4KBってのが嘘だから意味が無い話だね
MMUついてたって、そんなアホな実装は無い
4KBだかの1ページ分の中での細かなメモリ断片化はおおむね無視できる、ということ
メモリ断片化で困るのは大きなサイズのメモリを確保しようと思ったとき
連続したアドレスが確保できなくてコケる、ということだからね
これに対してMMUは有効ということ
メモリが断片化で多少無駄遣いされる分にはスワップしてでも動くから
そんでこれは程度問題
大概の場合は問題にならない
MMUついてたって、そんなアホな実装は無い
4KBだかの1ページ分の中での細かなメモリ断片化はおおむね無視できる、ということ
メモリ断片化で困るのは大きなサイズのメモリを確保しようと思ったとき
連続したアドレスが確保できなくてコケる、ということだからね
これに対してMMUは有効ということ
メモリが断片化で多少無駄遣いされる分にはスワップしてでも動くから
そんでこれは程度問題
大概の場合は問題にならない
666デフォルトの名無しさん
2017/09/17(日) 15:38:01.00ID:S40DCpdn https://ja.wikipedia.org/wiki/動的メモリ確保
>また、粒度の細かいページングは、ページングテーブル
>(物理アドレスと論理アドレスの対応表)が大きくなるため、
>4KB程度の大きなブロック単位でしか割り当てることができない。
ウィキペディア見るとそのアフォな実装がまかり通ってると読めるんだが・・・
>また、粒度の細かいページングは、ページングテーブル
>(物理アドレスと論理アドレスの対応表)が大きくなるため、
>4KB程度の大きなブロック単位でしか割り当てることができない。
ウィキペディア見るとそのアフォな実装がまかり通ってると読めるんだが・・・
667デフォルトの名無しさん
2017/09/17(日) 15:48:55.35ID:iyMogwhx アホだなぁ
OSレベルのメモリ確保と言語レベルのnew、mallocは別
OSレベルのメモリ確保と言語レベルのnew、mallocは別
668デフォルトの名無しさん
2017/09/17(日) 16:00:06.71ID:S40DCpdn こっちも参考になる
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E3%83%AA%E7%AE%A1%E7%90%86%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88
CPUによってMMUの実装が異なる点は面倒だな
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E3%83%AA%E7%AE%A1%E7%90%86%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88
CPUによってMMUの実装が異なる点は面倒だな
669デフォルトの名無しさん
2017/09/17(日) 16:06:24.06ID:S40DCpdn670デフォルトの名無しさん
2017/09/17(日) 16:13:26.66ID:iyMogwhx mallocやnewは
大きなサイズを確保するときと
小さなサイズを確保するときで
アルゴリズムが切り替わる
大きなサイズを確保するときと
小さなサイズを確保するときで
アルゴリズムが切り替わる
671デフォルトの名無しさん
2017/09/17(日) 16:17:08.43ID:iyMogwhx VC++2015での実行結果
auto a = malloc( 10 );
auto b = malloc( 10 );
wchar_t tmp[ 100 ];
::swprintf_s( tmp, 100, L"a = %x, b = %x \n", a, b );
::OutputDebugString( tmp );
----------------------------------------
a = 10a4f0, b = 10a508
残念でしたね
auto a = malloc( 10 );
auto b = malloc( 10 );
wchar_t tmp[ 100 ];
::swprintf_s( tmp, 100, L"a = %x, b = %x \n", a, b );
::OutputDebugString( tmp );
----------------------------------------
a = 10a4f0, b = 10a508
残念でしたね
672デフォルトの名無しさん
2017/09/17(日) 16:17:49.54ID:S40DCpdn MMUは多少以上の処理をすると簡単にフォールト返すのが困りもの
結局初心者レベルのプログラマしか想定してないんだよな
結局初心者レベルのプログラマしか想定してないんだよな
673デフォルトの名無しさん
2017/09/17(日) 16:30:36.71ID:S40DCpdn >>671
realloc使った事ある?
realloc使った事ある?
674デフォルトの名無しさん
2017/09/17(日) 16:34:30.81ID:iyMogwhx お前が残念なことと何の関係が?
あほらし
あほらし
675デフォルトの名無しさん
2017/09/17(日) 16:37:39.46ID:S40DCpdn 複雑なことをしていると、それがまるで正しいかのように思う点がアフォ
多少複雑なことをしていてもアフォな挙動をする可能性はあると考えるべき
多少複雑なことをしていてもアフォな挙動をする可能性はあると考えるべき
676デフォルトの名無しさん
2017/09/17(日) 17:05:23.31ID:S40DCpdn malloc,newの挙動の説明ってまんまMMUの説明なんだよな
だから複雑なアルゴリズムを使われていると思うのはMMUが複雑な挙動をしているから
でも、そんなに複雑な挙動してるか??
単に過去のアプリとの互換性の問題で変な事をしているだけだぞ
だから複雑なアルゴリズムを使われていると思うのはMMUが複雑な挙動をしているから
でも、そんなに複雑な挙動してるか??
単に過去のアプリとの互換性の問題で変な事をしているだけだぞ
677デフォルトの名無しさん
2017/09/17(日) 17:16:19.17ID:S40DCpdn たいがいのmalloc,newはMMU次第でいくらでも挙動が変化するからな
ちゃんとPC毎に動作確認したか??
ちゃんとPC毎に動作確認したか??
678デフォルトの名無しさん
2017/09/17(日) 17:44:23.50ID:4FsrO7aF ID:S40DCpdn しったかしすぎ
mallocの挙動はヒープのアルゴリズム次第
mallocの挙動はヒープのアルゴリズム次第
679デフォルトの名無しさん
2017/09/17(日) 17:55:14.06ID:S40DCpdn malloc,newの挙動はハードとOSによって変化するという記述は見たことあるけどな
680デフォルトの名無しさん
2017/09/17(日) 18:02:58.95ID:S40DCpdn ごめん、ハードとソフトウェアだった
681デフォルトの名無しさん
2017/09/17(日) 18:10:58.66ID:hRPbVJUN ヒープの管理しないでなんとかなるレベルのものはgc言語使えばいいんでは?
このスレの趣旨的にそうでしょ?
このスレの趣旨的にそうでしょ?
682デフォルトの名無しさん
2017/09/17(日) 21:59:59.26ID:S40DCpdn 自分はメモリ対策プログラムを作って対応したけどな。
メモリサイズを三種類用意して、メモリに対するガードの確実な作りにした。
現在のサイズに使われてるサイズにリミットサイズの三種類のサイズな。
外に出てくるサイズは現在のサイズ、
使われてるサイズはメモリを増やした場合の最大取得サイズで、事実上の取得サイズ、
リミットサイズは取得できるメモリの上限。
で、これらを組み合わせてスーパークラスを作って基本的に対応させてる。
メモリサイズを三種類用意して、メモリに対するガードの確実な作りにした。
現在のサイズに使われてるサイズにリミットサイズの三種類のサイズな。
外に出てくるサイズは現在のサイズ、
使われてるサイズはメモリを増やした場合の最大取得サイズで、事実上の取得サイズ、
リミットサイズは取得できるメモリの上限。
で、これらを組み合わせてスーパークラスを作って基本的に対応させてる。
683デフォルトの名無しさん
2017/09/17(日) 22:08:00.63ID:S40DCpdn メモリの増減には現在のサイズで対応し、このサイズが必要以上に大きくなると
使われてるサイズを拡張するようにした。リミットサイズは滅多に使わないけれども、
一応対応させた。
メモリに対する読み書きは専用関数を経由して読み書きするようにしたから、
素人が使っても安全なぐらいのプログラムになってる。
使われてるサイズを拡張するようにした。リミットサイズは滅多に使わないけれども、
一応対応させた。
メモリに対する読み書きは専用関数を経由して読み書きするようにしたから、
素人が使っても安全なぐらいのプログラムになってる。
684デフォルトの名無しさん
2017/09/17(日) 22:27:01.93ID:S40DCpdn あと、動的配列ってのを作って、複数のメモリ取得に対応させた。
メモリにヘッダとフッタを用意して、フッタには複数配列のデータに対応させ、
ヘッダには配列数とメモリサイズを入れてる。フッタには>>682のデータを持たせた。
ある意味では拡張コンパクションみたいなモノになった。
メモリにヘッダとフッタを用意して、フッタには複数配列のデータに対応させ、
ヘッダには配列数とメモリサイズを入れてる。フッタには>>682のデータを持たせた。
ある意味では拡張コンパクションみたいなモノになった。
685デフォルトの名無しさん
2017/09/17(日) 22:33:12.53ID:S40DCpdn で、アローケートが一回だけになるようにして、あとはリアロークで対応させた。
おかげでメモリの消費効率は異常なまでに効率よく使えるようになったよ。
あと、動的配列使う場合はいったんメモリをフォーマットするようにしたけどね。
おかげでメモリの消費効率は異常なまでに効率よく使えるようになったよ。
あと、動的配列使う場合はいったんメモリをフォーマットするようにしたけどね。
686デフォルトの名無しさん
2017/09/17(日) 23:21:53.67ID:S40DCpdn それから、動的配列は入れ子構造にすれば色々と応用がきくようになってるけどな。
で、追記式みたいにデータが動くツリー構造とかが使えるようになってる。
で、追記式みたいにデータが動くツリー構造とかが使えるようになってる。
687デフォルトの名無しさん
2017/09/17(日) 23:27:13.12ID:2kxiy1Rb アセンブラできない馬鹿がC++使うことを想定するとGCは成功と言わざるをえない。
688デフォルトの名無しさん
2017/09/18(月) 05:14:41.46ID:4HKrfROv ID:S40DCpdn は壊れたプログラマ
689デフォルトの名無しさん
2017/09/19(火) 04:18:18.94ID:GmtdcLyZ メモリを動かして処理すれば出来る事なのにな
出来る事を出来ないというのは間違い
出来る事を出来ないというのは間違い
690デフォルトの名無しさん
2017/09/19(火) 09:15:50.12ID:sOczhhK4 誰へのレスかすらわからないというね
誰も何も「出来ない」という趣旨のレスはしてないと思うが
独り言かね
誰も何も「出来ない」という趣旨のレスはしてないと思うが
独り言かね
691デフォルトの名無しさん
2017/09/19(火) 12:34:55.99ID:kI9ocUjD 前日に連続して意味不明な独り言してるやつがいるからそれの続きだろ
692デフォルトの名無しさん
2017/09/19(火) 17:17:32.47ID:xxOzXrDl ワッチョイ推奨
693デフォルトの名無しさん
2017/09/23(土) 13:33:17.07ID:J7EIO5I9 malloc()関数の内部はOSからメモリをまとめて取ってくる処理と、
すでに取ってきたメモリを(free()で空きが生じたとき)やりくりする処理の2本立て
前者の処理(システムコールの呼び出し)は比較的高コストなのでmalloc()の度に呼びはしない
また後者の処理は、連続したアドレス範囲のメモリを確保できている前提で動く
ページングはもっと下のレイヤーで行われるので、
malloc()のコード自体がMMUの有無やOSの違いを関知したりはしない
すでに取ってきたメモリを(free()で空きが生じたとき)やりくりする処理の2本立て
前者の処理(システムコールの呼び出し)は比較的高コストなのでmalloc()の度に呼びはしない
また後者の処理は、連続したアドレス範囲のメモリを確保できている前提で動く
ページングはもっと下のレイヤーで行われるので、
malloc()のコード自体がMMUの有無やOSの違いを関知したりはしない
694デフォルトの名無しさん
2017/09/23(土) 13:35:30.80ID:J7EIO5I9 例外的な変態実装は知らんが、まあ普通は
695デフォルトの名無しさん
2017/09/23(土) 14:27:08.01ID:Dvp9BlYO 最近はjavascriptのレイヤーとかまで出来てさらに複雑面倒に
696デフォルトの名無しさん
2017/10/26(木) 07:49:10.45ID:7YV3WIz9 かなり無駄な処理してそうだ
697デフォルトの名無しさん
2018/05/23(水) 21:27:23.53ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
3682F
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
3682F
698デフォルトの名無しさん
2018/07/05(木) 00:30:07.61ID:RfoszcD2 IZ6
699デフォルトの名無しさん
2018/08/31(金) 07:07:54.70ID:EIZBTnQd 保守
700デフォルトの名無しさん
2018/08/31(金) 23:14:14.49ID:qeyIwfZb 結論:GCは失敗
701デフォルトの名無しさん
2018/10/30(火) 23:04:20.19ID:POwfr3jz GCをルンバで例えたらどうだろう
自動
しかしテーブルの上や
冷蔵庫の中は片付けない
日常生活にさしさわりなく動いてほしい
自動
しかしテーブルの上や
冷蔵庫の中は片付けない
日常生活にさしさわりなく動いてほしい
702デフォルトの名無しさん
2018/10/30(火) 23:46:35.14ID:j0ABINKp それに加えてルンバが動けるように床は片付けておかないといけないとか
自動で上手く機能させるために気にしないといけない事が色々ある
自動で上手く機能させるために気にしないといけない事が色々ある
703デフォルトの名無しさん
2019/07/03(水) 08:55:46.04ID:XKc3eOoC もういらないって明示的に書かなきゃならないのなら自前で管理するのと一緒だよな。
アマチュアがサンデープログラムしたり、短時間で終了するアプリならむしろ楽チンだけど、
365日24時間稼働し続けるシステムには致命的な問題になるからなぁ
アマチュアがサンデープログラムしたり、短時間で終了するアプリならむしろ楽チンだけど、
365日24時間稼働し続けるシステムには致命的な問題になるからなぁ
704デフォルトの名無しさん
2020/02/13(木) 08:56:02.27ID:B+Fb/epo まあ落ちるアプリの多いこと
705デフォルトの名無しさん
2020/02/13(木) 15:29:41.61ID:z5cRWLgY GCがある言語でも、shallow copy と deep copy のどちらにすべきかの判断が難しくて、結局、間違えてバグの原因になる可能性がかなり残る。
また、C/C++ポインタのミスを危険視する人がいるが、多くの場合はプログラム開発時にテストをすれば間違いが発見できる。
C/C++でのバッファオーバーランを気にする人がいるが、逆にGCがある言語でも、間違って1つ右隣の要素にしてしまったり、処理する個数を1つ間違ったりするミスは有り得て、その場合、厳密な意味でのバッファオーバーランは無くても処理内容自体はバグる。
また、C/C++ポインタのミスを危険視する人がいるが、多くの場合はプログラム開発時にテストをすれば間違いが発見できる。
C/C++でのバッファオーバーランを気にする人がいるが、逆にGCがある言語でも、間違って1つ右隣の要素にしてしまったり、処理する個数を1つ間違ったりするミスは有り得て、その場合、厳密な意味でのバッファオーバーランは無くても処理内容自体はバグる。
706デフォルトの名無しさん
2020/02/22(土) 01:52:20.63ID:eI8xgqVo No GC派なんだけど、WebサーバーをC++とかで実装しても結局力持て余す感はあるよな
それだからかなり性能下げてもいいからちょっとでも早く作れるスクリプト言語採用されるってのもありそう
それだからかなり性能下げてもいいからちょっとでも早く作れるスクリプト言語採用されるってのもありそう
707デフォルトの名無しさん
2020/02/25(火) 21:09:36.95ID:EsX3m3+2 GCのメリットは言語の文法が簡単になること。
GCはスクリプト言語のためにある。
GCはスクリプト言語のためにある。
708デフォルトの名無しさん
2020/02/26(水) 10:49:39.07ID:wiEfavJ1 (destructor)()
dispose()
destroy()
close()
free()
delete
dispose()
destroy()
close()
free()
delete
709デフォルトの名無しさん
2021/10/13(水) 08:41:51.52ID:Qk99MJFD 今やGCのない言語でweb framework書く人間は絶滅危惧種
2022/12/27(火) 13:22:02.97ID:k0608tOt
このスレってガイジ扱いされてたけどRustとか出てきて実は正論だったんじゃね?って見直してるわ
711デフォルトの名無しさん
2022/12/27(火) 15:08:00.70ID:ITKU+yxr てへっ(∀`*ゞ)テヘッ
712デフォルトの名無しさん
2022/12/28(水) 20:55:42.01ID:kKtGrfmE おれはGCが最初から分かりづらいなぁと思ってたよ。mallocやnewより
713デフォルトの名無しさん
2022/12/29(木) 10:46:26.29ID:jCj0trE4 >>708
release
release
714デフォルトの名無しさん
2022/12/29(木) 16:52:23.68ID:HWC94+Gl GCは停止時間問題を解決できないまま生涯ふわふわした存在で居続けるのだよ
715デフォルトの名無しさん
2023/01/01(日) 09:16:28.52ID:A1pcbmVG716デフォルトの名無しさん
2023/02/08(水) 15:30:25.91ID:MLBtrq1u やはりGCは必要だった
WebAssemblyにガベージコレクション機能が登場、Chrome 111で試験的実装に。Dartなど高級言語のWebAssembly対応へ前進
https://www.publickey1.jp/blog/23/webassemblychrome_111dartwebassembly.html
WebAssemblyにガベージコレクション機能が登場、Chrome 111で試験的実装に。Dartなど高級言語のWebAssembly対応へ前進
https://www.publickey1.jp/blog/23/webassemblychrome_111dartwebassembly.html
717デフォルトの名無しさん
2023/02/10(金) 09:06:41.51ID:fIr5pCup すべてがBASICに戻る
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 日経平均の下落率3%超す、財政懸念で長期金利上昇 ★2 [お断り★]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【雑談】暇人集会所part18
