2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

GCは失敗。メモリは自分で管理せよ! その2

1 :デフォルトの名無しさん:2015/11/18(水) 23:24:59.79 ID:BUQ68wTG.net
GC、ガベージコレクション、ガベージコレクタ、ガーベジコレクション、ガーベジコレクタは使えない。
以下GCと記す

プログラマをメモリ管理から開放する!
といいつつ、メモリリーク問題の文献が大量にある。
これすなわち、メモリリーク問題が全然解決していないということ。
さらに、メモリ解放のタイミングの文献まで大量に生み出した。
これすなわち、新たなるメモリ管理に関する問題を生み出したということ。

malloc、freeじゃないが
結局のところ、メモリを管理するという技術は、今しばらくは、身につける・教える・学ぶべきではないだろうか?
使って、そのまま放置しても、基本的にはGCがなんとかしてくれている。
ランジョブからジョブ終了までさほどの時間を要さない。メモリも大して使わないならいいだろう。
しかし、規模が大きくなり常駐ジョブやメモリ大量使用のジョブになってくると、そんなメモリ管理の方法でやっていると、
上記「文献」を生み出されてしまう。

入門時は、メモリに無頓着でもいいだろう。それよりも、目的を達成することが先決だ。
しかし、慣れてきたら、やはりメモリの管理まで余裕を持って自分で行うべきだろう。

前スレ
GCは失敗。メモリは自分で管理せよ!
http://peace.2ch.net/test/read.cgi/tech/1412986420/

673 :デフォルトの名無しさん:2017/09/17(日) 16:30:36.71 ID:S40DCpdn.net
>>671
realloc使った事ある?

674 :デフォルトの名無しさん:2017/09/17(日) 16:34:30.81 ID:iyMogwhx.net
お前が残念なことと何の関係が?
あほらし

675 :デフォルトの名無しさん:2017/09/17(日) 16:37:39.46 ID:S40DCpdn.net
複雑なことをしていると、それがまるで正しいかのように思う点がアフォ
多少複雑なことをしていてもアフォな挙動をする可能性はあると考えるべき

676 :デフォルトの名無しさん:2017/09/17(日) 17:05:23.31 ID:S40DCpdn.net
malloc,newの挙動の説明ってまんまMMUの説明なんだよな
だから複雑なアルゴリズムを使われていると思うのはMMUが複雑な挙動をしているから
でも、そんなに複雑な挙動してるか??
単に過去のアプリとの互換性の問題で変な事をしているだけだぞ

677 :デフォルトの名無しさん:2017/09/17(日) 17:16:19.17 ID:S40DCpdn.net
たいがいのmalloc,newはMMU次第でいくらでも挙動が変化するからな
ちゃんとPC毎に動作確認したか??

678 :デフォルトの名無しさん:2017/09/17(日) 17:44:23.50 ID:4FsrO7aF.net
ID:S40DCpdn しったかしすぎ
mallocの挙動はヒープのアルゴリズム次第

679 :デフォルトの名無しさん:2017/09/17(日) 17:55:14.06 ID:S40DCpdn.net
malloc,newの挙動はハードとOSによって変化するという記述は見たことあるけどな

680 :デフォルトの名無しさん:2017/09/17(日) 18:02:58.95 ID:S40DCpdn.net
ごめん、ハードとソフトウェアだった

681 :デフォルトの名無しさん:2017/09/17(日) 18:10:58.66 ID:hRPbVJUN.net
ヒープの管理しないでなんとかなるレベルのものはgc言語使えばいいんでは?
このスレの趣旨的にそうでしょ?

682 :デフォルトの名無しさん:2017/09/17(日) 21:59:59.26 ID:S40DCpdn.net
自分はメモリ対策プログラムを作って対応したけどな。
メモリサイズを三種類用意して、メモリに対するガードの確実な作りにした。
現在のサイズに使われてるサイズにリミットサイズの三種類のサイズな。
外に出てくるサイズは現在のサイズ、
使われてるサイズはメモリを増やした場合の最大取得サイズで、事実上の取得サイズ、
リミットサイズは取得できるメモリの上限。
で、これらを組み合わせてスーパークラスを作って基本的に対応させてる。

683 :デフォルトの名無しさん:2017/09/17(日) 22:08:00.63 ID:S40DCpdn.net
メモリの増減には現在のサイズで対応し、このサイズが必要以上に大きくなると
使われてるサイズを拡張するようにした。リミットサイズは滅多に使わないけれども、
一応対応させた。
メモリに対する読み書きは専用関数を経由して読み書きするようにしたから、
素人が使っても安全なぐらいのプログラムになってる。

684 :デフォルトの名無しさん:2017/09/17(日) 22:27:01.93 ID:S40DCpdn.net
あと、動的配列ってのを作って、複数のメモリ取得に対応させた。
メモリにヘッダとフッタを用意して、フッタには複数配列のデータに対応させ、
ヘッダには配列数とメモリサイズを入れてる。フッタには>>682のデータを持たせた。
ある意味では拡張コンパクションみたいなモノになった。

685 :デフォルトの名無しさん:2017/09/17(日) 22:33:12.53 ID:S40DCpdn.net
で、アローケートが一回だけになるようにして、あとはリアロークで対応させた。
おかげでメモリの消費効率は異常なまでに効率よく使えるようになったよ。
あと、動的配列使う場合はいったんメモリをフォーマットするようにしたけどね。

686 :デフォルトの名無しさん:2017/09/17(日) 23:21:53.67 ID:S40DCpdn.net
それから、動的配列は入れ子構造にすれば色々と応用がきくようになってるけどな。
で、追記式みたいにデータが動くツリー構造とかが使えるようになってる。

687 :デフォルトの名無しさん:2017/09/17(日) 23:27:13.12 ID:2kxiy1Rb.net
アセンブラできない馬鹿がC++使うことを想定するとGCは成功と言わざるをえない。

688 :デフォルトの名無しさん:2017/09/18(月) 05:14:41.46 ID:4HKrfROv.net
ID:S40DCpdn は壊れたプログラマ

689 :デフォルトの名無しさん:2017/09/19(火) 04:18:18.94 ID:GmtdcLyZ.net
メモリを動かして処理すれば出来る事なのにな
出来る事を出来ないというのは間違い

690 :デフォルトの名無しさん:2017/09/19(火) 09:15:50.12 ID:sOczhhK4.net
誰へのレスかすらわからないというね
誰も何も「出来ない」という趣旨のレスはしてないと思うが
独り言かね

691 :デフォルトの名無しさん:2017/09/19(火) 12:34:55.99 ID:kI9ocUjD.net
前日に連続して意味不明な独り言してるやつがいるからそれの続きだろ

692 :デフォルトの名無しさん:2017/09/19(火) 17:17:32.47 ID:xxOzXrDl.net
ワッチョイ推奨

693 :デフォルトの名無しさん:2017/09/23(土) 13:33:17.07 ID:J7EIO5I9.net
malloc()関数の内部はOSからメモリをまとめて取ってくる処理と、
すでに取ってきたメモリを(free()で空きが生じたとき)やりくりする処理の2本立て

前者の処理(システムコールの呼び出し)は比較的高コストなのでmalloc()の度に呼びはしない
また後者の処理は、連続したアドレス範囲のメモリを確保できている前提で動く

ページングはもっと下のレイヤーで行われるので、
malloc()のコード自体がMMUの有無やOSの違いを関知したりはしない

694 :デフォルトの名無しさん:2017/09/23(土) 13:35:30.80 ID:J7EIO5I9.net
例外的な変態実装は知らんが、まあ普通は

695 :デフォルトの名無しさん:2017/09/23(土) 14:27:08.01 ID:Dvp9BlYO.net
最近はjavascriptのレイヤーとかまで出来てさらに複雑面倒に

696 :デフォルトの名無しさん:2017/10/26(木) 07:49:10.45 ID:7YV3WIz9.net
かなり無駄な処理してそうだ

697 :デフォルトの名無しさん:2018/03/11(日) 23:00:34.15 ID:gpjOI+baf
スタック構造、服を着たり脱いだりすることに例えられますね。

698 :デフォルトの名無しさん:2018/05/23(水) 21:27:23.53 ID:Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

3682F

699 :デフォルトの名無しさん:2018/07/05(木) 00:30:07.61 ID:RfoszcD2.net
IZ6

700 :デフォルトの名無しさん:2018/08/31(金) 07:07:54.70 ID:EIZBTnQd.net
保守

701 :デフォルトの名無しさん:2018/08/31(金) 23:14:14.49 ID:qeyIwfZb.net
結論:GCは失敗

702 :デフォルトの名無しさん:2018/10/30(火) 23:04:20.19 ID:POwfr3jz.net
GCをルンバで例えたらどうだろう

自動

しかしテーブルの上や
冷蔵庫の中は片付けない

日常生活にさしさわりなく動いてほしい

703 :デフォルトの名無しさん:2018/10/30(火) 23:46:35.14 ID:j0ABINKp.net
それに加えてルンバが動けるように床は片付けておかないといけないとか
自動で上手く機能させるために気にしないといけない事が色々ある

704 :デフォルトの名無しさん:2019/07/03(水) 08:55:46.04 ID:XKc3eOoC.net
もういらないって明示的に書かなきゃならないのなら自前で管理するのと一緒だよな。
アマチュアがサンデープログラムしたり、短時間で終了するアプリならむしろ楽チンだけど、
365日24時間稼働し続けるシステムには致命的な問題になるからなぁ

705 :デフォルトの名無しさん:2020/02/13(木) 08:56:02.27 ID:B+Fb/epo.net
まあ落ちるアプリの多いこと

706 :デフォルトの名無しさん:2020/02/13(木) 15:29:41.61 ID:z5cRWLgY.net
GCがある言語でも、shallow copy と deep copy のどちらにすべきかの判断が難しくて、結局、間違えてバグの原因になる可能性がかなり残る。

また、C/C++ポインタのミスを危険視する人がいるが、多くの場合はプログラム開発時にテストをすれば間違いが発見できる。

C/C++でのバッファオーバーランを気にする人がいるが、逆にGCがある言語でも、間違って1つ右隣の要素にしてしまったり、処理する個数を1つ間違ったりするミスは有り得て、その場合、厳密な意味でのバッファオーバーランは無くても処理内容自体はバグる。

707 :デフォルトの名無しさん:2020/02/22(土) 01:52:20.63 ID:eI8xgqVo.net
No GC派なんだけど、WebサーバーをC++とかで実装しても結局力持て余す感はあるよな
それだからかなり性能下げてもいいからちょっとでも早く作れるスクリプト言語採用されるってのもありそう

708 :デフォルトの名無しさん:2020/02/25(火) 21:09:36.95 ID:EsX3m3+2.net
GCのメリットは言語の文法が簡単になること。
GCはスクリプト言語のためにある。

709 :デフォルトの名無しさん:2020/02/26(水) 10:49:39.07 ID:wiEfavJ1.net
(destructor)()
dispose()
destroy()
close()
free()
delete

710 :デフォルトの名無しさん: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

711 :デフォルトの名無しさん:2021/10/13(水) 08:41:51.52 ID:Qk99MJFD.net
今やGCのない言語でweb framework書く人間は絶滅危惧種

712 :デフォルトの名無しさん :2022/12/27(火) 13:22:02.97 ID:k0608tOt.net
このスレってガイジ扱いされてたけどRustとか出てきて実は正論だったんじゃね?って見直してるわ

713 :デフォルトの名無しさん:2022/12/27(火) 15:08:00.70 ID:ITKU+yxr.net
てへっ(∀`*ゞ)テヘッ

714 :デフォルトの名無しさん:2022/12/28(水) 20:55:42.01 ID:kKtGrfmE.net
おれはGCが最初から分かりづらいなぁと思ってたよ。mallocやnewより

715 :デフォルトの名無しさん:2022/12/29(木) 10:46:26.29 ID:jCj0trE4.net
>>709
release

716 :デフォルトの名無しさん:2022/12/29(木) 16:52:23.68 ID:HWC94+Gl.net
GCは停止時間問題を解決できないまま生涯ふわふわした存在で居続けるのだよ

717 :デフォルトの名無しさん:2023/01/01(日) 09:16:28.52 ID:A1pcbmVG.net
>>1は、2014年に問題提起してるのか・・・。

Rustとかは2010年ころ発表だけど、実際に一般に知られるようになったのって2021年頭から
>>1は、それなりに的を射た技術理解・評価をしてるんだな

俺は人気の言語を覚えて、周りが言ってるメリットを、反対派にコピペするだけだけどww

ま、Pythonのお手軽さを超えることはないと思うけど、どこまでRustは伸びるのかなぁ

718 :デフォルトの名無しさん: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

719 :デフォルトの名無しさん:2023/02/10(金) 09:06:41.51 ID:fIr5pCup.net
すべてがBASICに戻る

720 :デフォルトの名無しさん:2023/02/11(土) 11:51:58.99 ID:2GIAa1ZP.net
>>719
それもいいな

721 :デフォルトの名無しさん:2023/03/08(水) 00:10:24.00 ID:ZNO423TE.net
GCを含め、「機械に不慣れな人でも簡単にプログラミングできるようにする」という
これまで高級言語が行ってきたような試みはすべてAIに取って替わられるような気がする
まあ、現時点のAIは使い物にならないかもしれないが、いずれは…

722 :デフォルトの名無しさん:2023/03/10(金) 23:04:44.35 ID:hNo+M64i.net
AIに「これはゴミか?」を学習させていって人間がゴミ認定される日も近い

211 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★