- 1 名前:デフォルトの名無しさん mailto:sageteoff [2015/11/18(水) 23:24:59.79 ID:BUQ68wTG.net]
- GC、ガベージコレクション、ガベージコレクタ、ガーベジコレクション、ガーベジコレクタは使えない。
以下GCと記す プログラマをメモリ管理から開放する! といいつつ、メモリリーク問題の文献が大量にある。 これすなわち、メモリリーク問題が全然解決していないということ。 さらに、メモリ解放のタイミングの文献まで大量に生み出した。 これすなわち、新たなるメモリ管理に関する問題を生み出したということ。 malloc、freeじゃないが 結局のところ、メモリを管理するという技術は、今しばらくは、身につける・教える・学ぶべきではないだろうか? 使って、そのまま放置しても、基本的にはGCがなんとかしてくれている。 ランジョブからジョブ終了までさほどの時間を要さない。メモリも大して使わないならいいだろう。 しかし、規模が大きくなり常駐ジョブやメモリ大量使用のジョブになってくると、そんなメモリ管理の方法でやっていると、 上記「文献」を生み出されてしまう。 入門時は、メモリに無頓着でもいいだろう。それよりも、目的を達成することが先決だ。 しかし、慣れてきたら、やはりメモリの管理まで余裕を持って自分で行うべきだろう。 前スレ GCは失敗。メモリは自分で管理せよ! peace.2ch.net/test/read.cgi/tech/1412986420/
- 620 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 10:53:43.30 ID:PldPJ2O3.net]
- struct test
{ std::shared_ptr<int> ptr; test(){ ptr = new int; } }; 上のコードはデストラクタを書く必要があるのかないのか スマポを使えばデストラクタを書かなくてよい場合もあり得るということ スマポを使わないのであれば当然デストラクタでdeleteをしなければならないだろう なので、「スマポ」と「デストラクタを書く必要性」は、関係がある ちなみにC#のDisposeはただのメソッドであるので このような芋づる式にメンバ変数のDisposeを呼び出してくれる機能はないし マークスイープなので原理上不可能である 他で使用中でないことをプログラマが保証しないとにはDisposeは呼べないので 自動化できない
- 621 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 11:05:47.46 ID:TNYjuRyh.net]
- >>606
ツボったw 効率至上が利点であり特徴だもんな
- 622 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 12:45:52.53 ID:LZ5unIkv.net]
- >>607
それptr.reset()使うんじゃないの?
- 623 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 13:34:38.18 ID:bbRnuBLg.net]
- グローバルが嫌われたのは
疑似マルチプロセスでメモリを共有していた時代の汚物だろ 今みたいなOSのメモリ管理ならアプリ単位グローバル常套
- 624 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 23:45:20.82 ID:nDIaGem/.net]
- C#/C++よりRustだろ
参照カウンタのオーバーヘッドすらない Firefoxに期待
- 625 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 04:04:29.47 ID:EhKul/vA.net]
- >>604
ideone.com/9L3kQp これじゃいかんのか? おかしかったら教えて
- 626 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 12:42:03.97 ID:KQ3Yixih.net]
- >>612
Write する度に WriteTypeA とかを生成/破棄するってこと? ログとかならその方が望ましいケースもあるかもしれないけど、例えば性能上の問題でストリームは開きっぱなしにしたいとかもあるでしょ
- 627 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 14:56:37.10 ID:a2T+Z3SD.net]
- >>613
開きっぱなしにしたいスコープは? スコープを一つのメソッドにして、同じようにすればいいじゃない コードが必要なら夜にでも書くよ
- 628 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 19:17:42.21 ID:KQ3Yixih.net]
- >>614
スコープを動的に変えたい場合を想定してるんだが 実行中にログファイルを変更できるアプリケーションとか見たことないの?
- 629 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 23:34:22.54 ID:EhKul/vA.net]
- >>615
ログファイルであれば日付で切り替えとかあるね。 そしたらストリーム開きっぱで日付が切り替わったら、閉じて新しいの開き直すとかあるわ。 いつもlog4とか使って主処理と切り離してたから考慮から抜けてたわ。 俺の意見はdb接続とかで一部にしか当てはまらんので、 「基本的には」とか 「リソースを管理する必要があるもの」とか前提がつくね。すまん。
- 630 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 06:41:14.49 ID:4ie0coBz.net]
- ログファイルはログが確実に記録されるのが使命であって性能は二の次なのだよ
よって開きっぱなしは論外 性能で問題が出るなら吐く量を調節すればいいだろう
- 631 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 08:38:51.71 ID:eBLDMII7.net]
- 開きっぱはなんでダメなん?
- 632 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 08:52:00.55 ID:YtkNE2sc.net]
- flushすればいいな
- 633 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 10:16:22.36 ID:HaGDkE41.net]
- >>618
アプリケーションエラーとか異常終了した時にバッファされてる内容が書かれないことがあるから 異常終了した時はまさにそのエラーになる直前のログが欲しいのに〜 ってなる w ただログってそういうログばかりじゃないし Apache のアクセスログみたいにいちいち閉じてたら全然間に合わないって現実を知らない >>617 はもう少し経験積むまで黙ってた方がいいと思う
- 634 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 14:20:53.96 ID:YtkNE2sc.net]
- >>620
それは開きっぱなしが問題なんじゃなくてflushしてないことが問題なだけで見当違い
- 635 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 14:29:51.71 ID:HaGDkE41.net]
- >>621
>>604 から読み直せよ 見当違いはお前の方だよ...
- 636 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 14:34:26.96 ID:WWFUnGVk.net]
- とこのように、相手を互いに見当違いであると罵り合うのであった
しかし、それは正しい 両者とも正しい
- 637 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 15:37:17.31 ID:O7mQP4/b.net]
- スコープの話してるのに flush とか頭わいてるだろ
- 638 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 21:51:13.35 ID:WZ8TOo4I.net]
- null安全をアピールしてる人間はObjCerから見ると補助輪付き自転車を渡してきてこれ安全だから絶対に乗れよと言ってくる頭おかしいおじさんにしか見えない
Swift移行がこじれるだけだから黙っといて欲しい
- 639 名前:デフォルトの名無しさん [2016/11/21(月) 14:59:21.88 ID:qSFgYSXv.net]
- 浜矩子・著
『アホノミクス完全崩壊に備えよ』 『どアホノミクスへ最後の通告』 『みんなで行こうアホノミクスの向こう側』 抑制のない成長に基づく経済政策は終焉 日本国民はどう対処すればいいのか。 新しい政権は民意を反映し、 食糧、住宅、健康、教育、最後に防衛です。 国民の意志を裏切ることは、 極端な場合、自殺や殺人にまでつながります。 民衆の指導者は 職業的政治家ではない人々から見つかるのです。 世界平和の脅威は、 イスラエル、イラン、アメリカです。 イスラエルの役割は跪いて、 パレスチナに許しを請うことです。 アメリカによる他国の虐待に 反対の声を上げなければなりません。 彼らは今世紀(21世紀)を この帝国が出来上がるアメリカの世紀と呼ぶ。 しかし、そうはならないでしょう。 彼らが世界中に‘民主的’制度を確立したい という衝動(世界を支配する)をコントロール するのは、マイト レーヤの任務です。 非常に間もなく マイト レーヤをテレビで見るでしょう。 彼は「匿名」で働いております。
- 640 名前:デフォルトの名無しさん mailto:sage [2016/12/08(木) 09:10:56.35 ID:FEYStmIt.net]
- 小規模ならGCのメリットは大きいのかもしれないが、大規模または大量にメモリを食うプログラムにはGCは向いてないのではないか。
あんまり例を知らないが、JAVAで動くマインクラフトのデバッグ画面でメモリ使用量みたら、めまぐるしく増加して一気に減ってるのみてびっくりした。
- 641 名前:デフォルトの名無しさん [2016/12/13(火) 13:02:48.84 ID:XUF2n21y.net]
- GC周りに付いて書かれたネットの記事読んできたけど
オブジェクトが生成されては次々と死んでいき 生きてるオブジェクトより死んだオブジェクトが多い場合の方が速くなるっぽい >>627 そう考えると長命のオブジェクトが大量にある方が(性能的には)問題だが マインクラフトがそれかは知らない
- 642 名前:デフォルトの名無しさん mailto:sage [2016/12/15(木) 23:33:53.51 ID:Z/98FfuD.net]
- >>606
C++はGC支援のメモリモデルが標準に入った と言ってもコンサバGCライブラリ向けだけどな
- 643 名前:デフォルトの名無しさん [2017/01/18(水) 11:38:56.79 ID:A+XqqRn6.net]
- 漏れたときの調査が大変
安心してると痛い目にあう
- 644 名前:デフォルトの名無しさん [2017/01/20(金) 16:23:16.03 ID:4Q3o1w03.net]
- 参照カウントは循環参照の問題が起こるだけじゃなくて
意外と遅いって聞くけどマジで? ・メモリをOSから直接確保・解放するのは意外と遅い ・マルチスレッドで参照カウントを使うにはアトミックな操作が必要 ・カウントを自動化すると不必要な参照カウントが起こる とかで 対してトレーシングGCの弱点は回収時に止まる時間が長いところか その対策か、V8やOracle JavaにはGCの時間を制限する機能があるみたいだが それってどうなんだ?
- 645 名前:デフォルトの名無しさん mailto:sage [2017/01/20(金) 23:17:39.79 ID:2XlTkpSB.net]
- まじ
- 646 名前:デフォルトの名無しさん [2017/01/22(日) 15:00:56.26 ID:lyHWqZIh.net]
- ^ナマポ
- 647 名前:デフォルトの名無しさん [2017/01/22(日) 18:20:35.13 ID:CvVvUjG5.net]
- ストップ・ザ・ワールドの問題さえなくなればGCが最強ってこと?
- 648 名前:デフォルトの名無しさん mailto:sage [2017/01/22(日) 18:44:59.67 ID:2ikRDhsq.net]
- >>634
フルGCの危険があるという点で最強になりえない
- 649 名前:デフォルトの名無しさん mailto:sage [2017/02/20(月) 19:16:44.90 ID:NKdiRgAe.net]
- バイオハザード7は28万行のC#コードでできててビルド10秒らしい。
独自VM、独自GCだとか。
- 650 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 22:46:15.84 ID:USOySpAW.net]
- >>636
ゲームで28万ステップって長すぎね?
- 651 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 12:49:43.55 ID:ZgIqHRoc.net]
- バイオの資料見つけた。
https://www.slideshare.net/mobile/capcom_rd/re-engine-72302524 FrameGCって独自アルゴリズムなのか。
- 652 名前:デフォルトの名無しさん [2017/05/26(金) 12:05:46.50 ID:uY9cFHyF.net]
- >>638
FrameGCはゲームというかRTSに特化したGCだね ・ローカルに発生したオブジェクトは溜め込んでフレームの終わりにまとめて開放する ・グローバルに結びついたオブジェクトにはカウンタGCを適用する ・フレーム毎に循環参照のチェックを少しずつ行う ざっくりこんな感じ?
- 653 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 20:16:13.14 ID:0194UVlm.net]
- 内部的にC#をC++に変換してるからC#をスクリプト的に使ってるだけで実質C++だな。当然GC・メモリアロケータ周りも身内実装。
- 654 名前:デフォルトの名無しさん mailto:sage [2017/05/26(金) 22:20:13.64 ID:uY9cFHyF.net]
- >>640
C++のスマートポインタみたいな形で実装できるのかな? 俺は検討してみたけど無理だったw
- 655 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 06:38:16.81 ID:MyiMvGI/.net]
- そこまでやって既存のフレームワーク使えるのって疑問が。
- 656 名前:デフォルトの名無しさん mailto:sage [2017/06/03(土) 10:06:08.23 ID:sCohk93m.net]
- GCがconflictするんですね判ります
- 657 名前:デフォルトの名無しさん [2017/09/11(月) 12:41:54.43 ID:YXmvV/7e.net]
- 「メモリ」+「フラグメンテーション」で検索すると色々と詳しい話が出てくるね。
- 658 名前:デフォルトの名無しさん [2017/09/11(月) 13:14:06.52 ID:YXmvV/7e.net]
- ここが分かりやすかった
ttps://www.uquest.co.jp/embedded/learning/lecture17.html ttp://www.kaede-software.com/2015/06/post_655.html
- 659 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 13:44:59.20 ID:I3u+9T/v.net]
- メモリのフラグメンテーションなど実質的には気にする必要は全くない
なぜなら現実のコンピュータにはMMUが付いてるから 物理メモリの連続空間が枯渇することは考えなくてもよい あり得るとしたら32bitプロセスでの論理アドレスの連続空間の枯渇であるが 64bitプロセスにすれば問題ない もともと論理アドレス空間が枯渇するかもしれないほどメモリを使うのなら 64bitプロセスにするのが当たり前なので・・・ というわけでメモリのフラグメンテーションは気にしなくてよい CPUのキャッシュのヒット率を上げるとか、そういうことでなければ
- 660 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 17:53:09.29 ID:P5pczjP2.net]
- そうなん?
ガベコレの回収効率が悪くなって 無駄な使用領域が増えて枯渇しやすくなるんじゃね
- 661 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 18:13:16.59 ID:SGfZs9nE.net]
- >>647
GCのアロケートサイズとページングサイズの区別もついてないアホはスルーでよろしく
- 662 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 20:33:05.66 ID:I3u+9T/v.net]
- 程度の問題であって
世のプログラムがフラグメンテーションなど気にせずとも 普通に動いているのを見てわかる通り、問題になってない MMUがあるから
- 663 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 21:54:05.93 ID:khvQxUtn.net]
- >>646
そういうぬるい環境で済むところもあればそうじゃないところもある ゲームコンソールだと物理メモリサイズに最適化するからな STLとかdefault allocatorで気軽に使ってヒープ汚しまくってると そのうち物理メモリ足りなくなってページアウト
- 664 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 10:09:32.99 ID:g0xsLkF6.net]
- 必ず来ると思った、その反論
しかし、稀な事例を持ち出して、どうこう言っても仕方がない
- 665 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 12:38:17.20 ID:E3lbzyXM.net]
- MMU のお陰でふらぐめんてーしょんが起きない環境の方が希だと思うが
- 666 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 13:22:19.16 ID:crCgFvVY.net]
- フラグメンテーションはアドレス空間や実メモリ量が限定される環境をどううまく使うかの話だから
MMUがあって64bit空間なら平気と言われてもな
- 667 名前:デフォルトの名無しさん [2017/09/13(水) 03:53:58.25 ID:TAF2DPKT.net]
- そそ、複雑なプログラムって書こうと思えばいくらでも複雑化するからな。
で、簡潔で高度と思われる機能を追加していくほど難易度は指数関数的に増大するし。
- 668 名前:デフォルトの名無しさん [2017/09/13(水) 05:10:44.22 ID:t818hmCa.net]
- でも実際スマホアプリ作ってんのにフラグメンテーションを防ぐ為に最初に使用する分全部確保しておいて、その中で割り当てするんだーとかいって、オレオレアロケーター作ろうとする頭の悪いやつがいて困る。
逆にお前の作ったそのアロケーターの中でフラグメンテーションして枯渇するわと。
- 669 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 07:42:12.50 ID:7O+lQKpp.net]
- 組み込みなんかでよくあるそういうのは、どっちかというと最初に確保したメモリ以上を
使用しないことを保証するためにやるもんだろう。
- 670 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 08:52:01.48 ID:Vaq5SeW/.net]
- アロケータ置き換えるだけでは普通解決しないでしょ
>>655 こそが置き換えて何するのか理解できてない気がする
- 671 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 22:09:52.04 ID:PcFMQESF.net]
- むしろ一定時間を保証する(なのでサイズは固定長とかが多い)もんだろ
- 672 名前:デフォルトの名無しさん [2017/09/17(日) 13:06:26.21 ID:S40DCpdn.net]
- いくら64bitあっても設計が雑ならメモリ枯渇するでしょ
ページング方式でメモリ消費されてんだし
- 673 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 13:32:06.14 ID:2kxiy1Rb.net]
- MMUのアドレス変換コストもタダじゃない。
TLBキャッシュ外れたら遅くなる。
- 674 名前:デフォルトの名無しさん [2017/09/17(日) 13:32:07.34 ID:S40DCpdn.net]
- 1回のメモリ取得で4kづつ消費されるわけか
- 675 名前:デフォルトの名無しさん [2017/09/17(日) 13:49:19.58 ID:S40DCpdn.net]
- ツリー状のメモリ管理するとあっという間にメモリ無くなるな
class CTree{ std::vector<CTree>; }; とか
- 676 名前:デフォルトの名無しさん [2017/09/17(日) 14:00:55.72 ID:S40DCpdn.net]
- こうするとさらにメモリが消えていくな
class CTree{ std::map<std::string,CTree>; };
- 677 名前:デフォルトの名無しさん [2017/09/17(日) 14:12:30.87 ID:S40DCpdn.net]
- 間違えた。
class CTree{ std::vector<CTree> m_Tree; }; class CTree{ std::map<std::string,CTree>m_Tree; }; で、ツリーのノード一つ毎に上は4kづつ下は8kづつメモリを消費するわけで・・・
- 678 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 15:23:52.56 ID:iyMogwhx.net]
- 一回のメモリ取得で4KBってのが嘘だから意味が無い話だね
MMUついてたって、そんなアホな実装は無い 4KBだかの1ページ分の中での細かなメモリ断片化はおおむね無視できる、ということ メモリ断片化で困るのは大きなサイズのメモリを確保しようと思ったとき 連続したアドレスが確保できなくてコケる、ということだからね これに対してMMUは有効ということ メモリが断片化で多少無駄遣いされる分にはスワップしてでも動くから そんでこれは程度問題 大概の場合は問題にならない
- 679 名前:デフォルトの名無しさん [2017/09/17(日) 15:38:01.00 ID:S40DCpdn.net]
- https://ja.wikipedia.org/wiki/動的メモリ確保
>また、粒度の細かいページングは、ページングテーブル >(物理アドレスと論理アドレスの対応表)が大きくなるため、 >4KB程度の大きなブロック単位でしか割り当てることができない。 ウィキペディア見るとそのアフォな実装がまかり通ってると読めるんだが・・・
- 680 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 15:48:55.35 ID:iyMogwhx.net]
- アホだなぁ
OSレベルのメモリ確保と言語レベルのnew、mallocは別
- 681 名前:デフォルトの名無しさん [2017/09/17(日) 16:00:06.71 ID:S40DCpdn.net]
- こっちも参考になる
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の実装が異なる点は面倒だな
- 682 名前:デフォルトの名無しさん [2017/09/17(日) 16:06:24.06 ID:S40DCpdn.net]
- >>667
ちゃんとmallocやnew時のアドレス確認はしたか??かなりアフォな動作してるぞ? まあ、多少のrealloc程度の処理なら何とかしてくれるけどな。
- 683 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 16:13:26.66 ID:iyMogwhx.net]
- mallocやnewは
大きなサイズを確保するときと 小さなサイズを確保するときで アルゴリズムが切り替わる
- 684 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 16:17:08.43 ID:iyMogwhx.net]
- 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 残念でしたね
- 685 名前:デフォルトの名無しさん [2017/09/17(日) 16:17:49.54 ID:S40DCpdn.net]
- MMUは多少以上の処理をすると簡単にフォールト返すのが困りもの
結局初心者レベルのプログラマしか想定してないんだよな
- 686 名前:デフォルトの名無しさん [2017/09/17(日) 16:30:36.71 ID:S40DCpdn.net]
- >>671
realloc使った事ある?
- 687 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 16:34:30.81 ID:iyMogwhx.net]
- お前が残念なことと何の関係が?
あほらし
- 688 名前:デフォルトの名無しさん [2017/09/17(日) 16:37:39.46 ID:S40DCpdn.net]
- 複雑なことをしていると、それがまるで正しいかのように思う点がアフォ
多少複雑なことをしていてもアフォな挙動をする可能性はあると考えるべき
- 689 名前:デフォルトの名無しさん [2017/09/17(日) 17:05:23.31 ID:S40DCpdn.net]
- malloc,newの挙動の説明ってまんまMMUの説明なんだよな
だから複雑なアルゴリズムを使われていると思うのはMMUが複雑な挙動をしているから でも、そんなに複雑な挙動してるか?? 単に過去のアプリとの互換性の問題で変な事をしているだけだぞ
- 690 名前:デフォルトの名無しさん [2017/09/17(日) 17:16:19.17 ID:S40DCpdn.net]
- たいがいのmalloc,newはMMU次第でいくらでも挙動が変化するからな
ちゃんとPC毎に動作確認したか??
- 691 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 17:44:23.50 ID:4FsrO7aF.net]
- ID:S40DCpdn しったかしすぎ
mallocの挙動はヒープのアルゴリズム次第
- 692 名前:デフォルトの名無しさん [2017/09/17(日) 17:55:14.06 ID:S40DCpdn.net]
- malloc,newの挙動はハードとOSによって変化するという記述は見たことあるけどな
- 693 名前:デフォルトの名無しさん [2017/09/17(日) 18:02:58.95 ID:S40DCpdn.net]
- ごめん、ハードとソフトウェアだった
- 694 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 18:10:58.66 ID:hRPbVJUN.net]
- ヒープの管理しないでなんとかなるレベルのものはgc言語使えばいいんでは?
このスレの趣旨的にそうでしょ?
- 695 名前:デフォルトの名無しさん [2017/09/17(日) 21:59:59.26 ID:S40DCpdn.net]
- 自分はメモリ対策プログラムを作って対応したけどな。
メモリサイズを三種類用意して、メモリに対するガードの確実な作りにした。 現在のサイズに使われてるサイズにリミットサイズの三種類のサイズな。 外に出てくるサイズは現在のサイズ、 使われてるサイズはメモリを増やした場合の最大取得サイズで、事実上の取得サイズ、 リミットサイズは取得できるメモリの上限。 で、これらを組み合わせてスーパークラスを作って基本的に対応させてる。
- 696 名前:デフォルトの名無しさん [2017/09/17(日) 22:08:00.63 ID:S40DCpdn.net]
- メモリの増減には現在のサイズで対応し、このサイズが必要以上に大きくなると
使われてるサイズを拡張するようにした。リミットサイズは滅多に使わないけれども、 一応対応させた。 メモリに対する読み書きは専用関数を経由して読み書きするようにしたから、 素人が使っても安全なぐらいのプログラムになってる。
- 697 名前:デフォルトの名無しさん [2017/09/17(日) 22:27:01.93 ID:S40DCpdn.net]
- あと、動的配列ってのを作って、複数のメモリ取得に対応させた。
メモリにヘッダとフッタを用意して、フッタには複数配列のデータに対応させ、 ヘッダには配列数とメモリサイズを入れてる。フッタには>>682のデータを持たせた。 ある意味では拡張コンパクションみたいなモノになった。
- 698 名前:デフォルトの名無しさん [2017/09/17(日) 22:33:12.53 ID:S40DCpdn.net]
- で、アローケートが一回だけになるようにして、あとはリアロークで対応させた。
おかげでメモリの消費効率は異常なまでに効率よく使えるようになったよ。 あと、動的配列使う場合はいったんメモリをフォーマットするようにしたけどね。
- 699 名前:デフォルトの名無しさん [2017/09/17(日) 23:21:53.67 ID:S40DCpdn.net]
- それから、動的配列は入れ子構造にすれば色々と応用がきくようになってるけどな。
で、追記式みたいにデータが動くツリー構造とかが使えるようになってる。
- 700 名前:デフォルトの名無しさん mailto:sage [2017/09/17(日) 23:27:13.12 ID:2kxiy1Rb.net]
- アセンブラできない馬鹿がC++使うことを想定するとGCは成功と言わざるをえない。
- 701 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 05:14:41.46 ID:4HKrfROv.net]
- ID:S40DCpdn は壊れたプログラマ
- 702 名前:デフォルトの名無しさん [2017/09/19(火) 04:18:18.94 ID:GmtdcLyZ.net]
- メモリを動かして処理すれば出来る事なのにな
出来る事を出来ないというのは間違い
- 703 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 09:15:50.12 ID:sOczhhK4.net]
- 誰へのレスかすらわからないというね
誰も何も「出来ない」という趣旨のレスはしてないと思うが 独り言かね
- 704 名前:デフォルトの名無しさん [2017/09/19(火) 12:34:55.99 ID:kI9ocUjD.net]
- 前日に連続して意味不明な独り言してるやつがいるからそれの続きだろ
- 705 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 17:17:32.47 ID:xxOzXrDl.net]
- ワッチョイ推奨
- 706 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 13:33:17.07 ID:J7EIO5I9.net]
- malloc()関数の内部はOSからメモリをまとめて取ってくる処理と、
すでに取ってきたメモリを(free()で空きが生じたとき)やりくりする処理の2本立て 前者の処理(システムコールの呼び出し)は比較的高コストなのでmalloc()の度に呼びはしない また後者の処理は、連続したアドレス範囲のメモリを確保できている前提で動く ページングはもっと下のレイヤーで行われるので、 malloc()のコード自体がMMUの有無やOSの違いを関知したりはしない
- 707 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 13:35:30.80 ID:J7EIO5I9.net]
- 例外的な変態実装は知らんが、まあ普通は
- 708 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 14:27:08.01 ID:Dvp9BlYO.net]
- 最近はjavascriptのレイヤーとかまで出来てさらに複雑面倒に
- 709 名前:デフォルトの名無しさん mailto:sage [2017/10/26(木) 07:49:10.45 ID:7YV3WIz9.net]
- かなり無駄な処理してそうだ
- 710 名前:デフォルトの名無しさん [2018/03/11(日) 23:00:34.15 ID:gpjOI+baf]
- スタック構造、服を着たり脱いだりすることに例えられますね。
- 711 名前:デフォルトの名無しさん [2018/05/23(水) 21:27:23.53 ID:Au5e7VGg.net]
- 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 3682F
- 712 名前:デフォルトの名無しさん [2018/07/05(木) 00:30:07.61 ID:RfoszcD2.net]
- IZ6
- 713 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 07:07:54.70 ID:EIZBTnQd.net]
- 保守
- 714 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 23:14:14.49 ID:qeyIwfZb.net]
- 結論:GCは失敗
- 715 名前:デフォルトの名無しさん [2018/10/30(火) 23:04:20.19 ID:POwfr3jz.net]
- GCをルンバで例えたらどうだろう
自動 しかしテーブルの上や 冷蔵庫の中は片付けない 日常生活にさしさわりなく動いてほしい
- 716 名前:デフォルトの名無しさん mailto:sage [2018/10/30(火) 23:46:35.14 ID:j0ABINKp.net]
- それに加えてルンバが動けるように床は片付けておかないといけないとか
自動で上手く機能させるために気にしないといけない事が色々ある
- 717 名前:デフォルトの名無しさん mailto:sage [2019/07/03(水) 08:55:46.04 ID:XKc3eOoC.net]
- もういらないって明示的に書かなきゃならないのなら自前で管理するのと一緒だよな。
アマチュアがサンデープログラムしたり、短時間で終了するアプリならむしろ楽チンだけど、 365日24時間稼働し続けるシステムには致命的な問題になるからなぁ
- 718 名前:デフォルトの名無しさん [2020/02/13(木) 08:56:02.27 ID:B+Fb/epo.net]
- まあ落ちるアプリの多いこと
- 719 名前:デフォルトの名無しさん mailto:sage [2020/02/13(木) 15:29:41.61 ID:z5cRWLgY.net]
- GCがある言語でも、shallow copy と deep copy のどちらにすべきかの判断が難しくて、結局、間違えてバグの原因になる可能性がかなり残る。
また、C/C++ポインタのミスを危険視する人がいるが、多くの場合はプログラム開発時にテストをすれば間違いが発見できる。 C/C++でのバッファオーバーランを気にする人がいるが、逆にGCがある言語でも、間違って1つ右隣の要素にしてしまったり、処理する個数を1つ間違ったりするミスは有り得て、その場合、厳密な意味でのバッファオーバーランは無くても処理内容自体はバグる。
- 720 名前:デフォルトの名無しさん [2020/02/22(土) 01:52:20.63 ID:eI8xgqVo.net]
- No GC派なんだけど、WebサーバーをC++とかで実装しても結局力持て余す感はあるよな
それだからかなり性能下げてもいいからちょっとでも早く作れるスクリプト言語採用されるってのもありそう
- 721 名前:デフォルトの名無しさん mailto:sage [2020/02/25(火) 21:09:3
]
- [ここ壊れてます]
- 722 名前:6.95 ID:EsX3m3+2.net mailto: GCのメリットは言語の文法が簡単になること。
GCはスクリプト言語のためにある。 [] - [ここ壊れてます]
- 723 名前:デフォルトの名無しさん [2020/02/26(水) 10:49:39.07 ID:wiEfavJ1.net]
- (destructor)()
dispose() destroy() close() free() delete
- 724 名前:デフォルトの名無しさん [2020/12/29(火) 01:21:48.14 ID:qxevuYQ38]
- 数学は「定義」にかえることが大事!
https://www.youtube.com/watch?v=yhrUT4bLm7Q 大学で本気で学問をしたい人へのアドバイス https://www.youtube.com/watch?v=7G7XbRSdk9k 高校生でも雰囲気だけ分かるガロア理論 https://www.youtube.com/watch?v=LiPv0VuSvaE 高校生でも雰囲気だけわかる圏論 https://www.youtube.com/watch?v=D2GU4cmm3Ys&t=225s 高校生でも雰囲気だけ分かるゼータ関数とリーマン予想 https://www.youtube.com/watch?v=MaerL2XLaqk 高校生でもわかる】いろいろな積分 リーマン,ルベーグ.. https://www.youtube.com/watch?v=jzfaFCDn5JY 数を創る話?自然数から複素数への構成? https://www.youtube.com/watch?v=dQ2nFUTNchU 高校数学と何が違うの?大学数学でつまずかないためのアドバイス![大学数学準備講座1/4] https://www.youtube.com/watch?v=duXZGbRviG4 【高校数学】極限の誤解を解く https://www.youtube.com/watch?v=cPNttp7b1Gs
- 725 名前:デフォルトの名無しさん mailto:sage [2021/10/13(水) 08:41:51.52 ID:Qk99MJFD.net]
- 今やGCのない言語でweb framework書く人間は絶滅危惧種
- 726 名前:デフォルトの名無しさん mailto:agete [2022/12/27(火) 13:22:02.97 ID:k0608tOt.net]
- このスレってガイジ扱いされてたけどRustとか出てきて実は正論だったんじゃね?って見直してるわ
- 727 名前:デフォルトの名無しさん [2022/12/27(火) 15:08:00.70 ID:ITKU+yxr.net]
- てへっ(∀`*ゞ)テヘッ
- 728 名前:デフォルトの名無しさん [2022/12/28(水) 20:55:42.01 ID:kKtGrfmE.net]
- おれはGCが最初から分かりづらいなぁと思ってたよ。mallocやnewより
- 729 名前:デフォルトの名無しさん [2022/12/29(木) 10:46:26.29 ID:jCj0trE4.net]
- >>709
release
- 730 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 16:52:23.68 ID:HWC94+Gl.net]
- GCは停止時間問題を解決できないまま生涯ふわふわした存在で居続けるのだよ
- 731 名前:デフォルトの名無しさん [2023/01/01(日) 09:16:28.52 ID:A1pcbmVG.net]
- >>1は、2014年に問題提起してるのか・・・。
Rustとかは2010年ころ発表だけど、実際に一般に知られるようになったのって2021年頭から >>1は、それなりに的を射た技術理解・評価をしてるんだな 俺は人気の言語を覚えて、周りが言ってるメリットを、反対派にコピペするだけだけどww ま、Pythonのお手軽さを超えることはないと思うけど、どこまでRustは伸びるのかなぁ
- 732 名前:デフォルトの名無しさん mailto:sage [2023/02/08(水) 15:30:25.91 ID:MLBtrq1u.net]
- やはりGCは必要だった
WebAssemblyにガベージコレクション機能が登場、Chrome 111で試験的実装に。Dartなど高級言語のWebAssembly対応へ前進 https://www.publickey1.jp/blog/23/webassemblychrome_111dartwebassembly.html
- 733 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 09:06:41.51 ID:fIr5pCup.net]
- すべてがBASICに戻る
- 734 名前:デフォルトの名無しさん [2023/02/11(土) 11:51:58.99 ID:2GIAa1ZP.net]
- >>719
それもいいな
- 735 名前:デフォルトの名無しさん mailto:sage [2023/03/08(水) 00:10:24.00 ID:ZNO423TE.net]
- GCを含め、「機械に不慣れな人でも簡単にプログラミングできるようにする」という
これまで高級言語が行ってきたような試みはすべてAIに取って替わられるような気がする まあ、現時点のAIは使い物にならないかもしれないが、いずれは…
- 736 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 23:04:44.35 ID:hNo+M64i.net]
- AIに「これはゴミか?」を学習させていって人間がゴミ認定される日も近い
- 737 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|