[過去ログ] GCは失敗。メモリは自分で管理せよ! その2©2ch.net (720レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
378: デフォルトの名無しさん [sage] 2016/02/10(水) 20:59:51.38 ID:rEABlirv(1) AAS
JAVAはクソ
379: デフォルトの名無しさん [sage] 2016/02/10(水) 21:00:45.91 ID:ZQ/yQmxu(1) AAS
簡単だよ
スレッド立ててGCをフルサイクル実行し続けるだけ
380: デフォルトの名無しさん [sage] 2016/02/11(木) 16:22:39.56 ID:vxbPXQEr(1) AAS
javaもsandy-bridge以降でSSDとかならそれほど重いってわけじゃないけど
相変わらずatomでeMMCだったりする環境も並行して存在してて
そこで動かすと改めて糞だと思うわけよ
GCが悪いんじゃなくてjavaランタイムが悪いんだろうけどね
381: デフォルトの名無しさん [sage] 2016/02/11(木) 19:04:56.18 ID:EuRhj+pR(1) AAS
フラッシュとJAVAは、システムに見つかり次第、速攻アンインストールしている
382: デフォルトの名無しさん [sage] 2016/02/12(金) 08:32:20.35 ID:Uwfak+5B(1) AAS
>>377377(1): デフォルトの名無しさん [sage] 2016/02/10(水) 17:29:46.71 ID:+sMp0qjD(1) AAS
そうそう、メインメモリの管理に関しては100%成功している
しかし、今やメインメモリはそれほど貴重なものではないわけだがな
コンシューマでも数十GB積んでたりは珍しくない
メインメモリがなくなるより他のリソースが枯渇する方が現実的
だからメインメモリ以外のリソースに関しては使い終わったら即座に開放してほしいから
GCとは別にRAIIを行う仕組みを導入するわけだが
真剣に考えていくと、RAIIはGCと相性が悪い
そもそも使い終わったら自動で即座に開放(RAII)できるなら全てのGCはそう実装すべきで
それが出来ないからわざわざコストのかかるマークスイープを遅延して実行しているわけだからな
C++みたいにGCを参照カウンタ方式にして、プログラマが人力で循環参照が無いことを保証する以外に
あちこちから参照されるオブジェクトのRAIIを自動化する方法は無い
Pythonみたいに参照カウント+GC(循環参照を解放するため)が最強ってこと?
383: デフォルトの名無しさん [sage] 2016/02/13(土) 15:34:22.04 ID:OKKAbu21(1) AAS
最近のPC環境でも贅沢が過ぎるプログラムは動かん。
最近の奴だと、Node.jsのパッケージマネージャnpmが`npm search`と初回に打つとパッケージ検索用のインデックスを作ろうとするんだけど、
1つのjsonオブジェクトにまとめようとするからかOOMエラーを吐いて失敗するっていう不具合。
npmに登録されてるパッケージ数が膨大になったせいもあるが、設計を間違えると遅いどころか動かなくなる。
384: デフォルトの名無しさん [sage] 2016/02/13(土) 22:32:48.48 ID:6Xm9VASh(1) AAS
GCがある言語でRAIIみたいな事したいのなら
loan patten使えばいいだけでは
385: デフォルトの名無しさん [sage] 2016/02/13(土) 23:42:47.95 ID:VLo29AwR(1) AAS
リソースを共有した上で最後の参照が切れた時点で回収してほしい
しかし誰が共有するかもその寿命も実行時までわからない
そういう前時代的なダサい設計をした時の話しなんだろ
Loan Patternはこの状況では役に立たない
386: デフォルトの名無しさん [sage] 2016/02/14(日) 00:56:38.97 ID:mwiD0ozs(1) AAS
しかし、言語側は、そういうダサい設計も許さないといけないので
マークスイープ系GC搭載で、循環参照が有っても良いことが前提になっている言語で
「使い終わったら自動で即座に開放」を実現するのは困難
そんなことが可能なら、マークスイープは要らないからな
387(1): デフォルトの名無しさん [sage] 2016/02/14(日) 19:42:04.72 ID:I7Qc+kxz(1) AAS
循環参照なんて放置すればいいの
どうせプロセスが終了すればOSが開放してくれるの
388: デフォルトの名無しさん [] 2016/02/14(日) 20:10:25.23 ID:EqhxGdNa(1) AAS
>>387
Windowsのように定期的に再起動しなければいけないソフトウェアができあがっちゃいそう
389: デフォルトの名無しさん [sage] 2016/02/15(月) 18:16:17.47 ID:TvNTryet(1) AAS
ErlangでOS作るか
390: デフォルトの名無しさん [] 2016/02/15(月) 19:50:44.55 ID:L+A+Kd2h(1) AAS
そこはRustで
391: デフォルトの名無しさん [sage] 2016/03/01(火) 15:00:17.89 ID:QERDe7Jh(1) AAS
5分でわかるガベージコレクションの仕組み
外部リンク:geechs-magazine.com
392: デフォルトの名無しさん [] 2016/03/23(水) 02:31:06.32 ID:MFzvJNSi(1) AAS
常識的に考えてカーネルの実装にはGCなんて使えないし
業務アプリケーションではパフォーマンスより開発速度がはるかに重要になる
結局適材適所だ
GCを強制されるのは苦痛だが使えないのも苦痛だ
好きな時に使える言語がいいよね!
393(1): デフォルトの名無しさん [sage] 2016/03/23(水) 03:41:39.64 ID:SoMbpeP6(1/2) AAS
パフォーマンスが問題にならないGCが一つだけあって、それが参照カウンタ方式のGC
パフォーマンスが問題にならない→即座に逐一削除できる→RAIIが出来る
非常に強力だがプログラマが循環参照が無いことを保証しなければならない
しかし、循環参照が発生する場合は設計段階で分かるのでそれほど深刻では無いのだ!
394: デフォルトの名無しさん [sage] 2016/03/23(水) 03:47:03.14 ID:VzK80P8k(1) AAS
androidでもう何も判らん状態でプログラミングして
それなりに動くのができたからおれは許したよ
でもサービスまで勝手に回収されちゃうとは思わなかったわ
アホだろグーグル
395: デフォルトの名無しさん [sage] 2016/03/23(水) 07:53:14.58 ID:JT2FURwc(1/2) AAS
RAIIに必要なのはデストラクタが呼ばれることであって実際にメモリが解放されることじゃないから
GC言語でもRAIIができないわけじゃない。
396(1): デフォルトの名無しさん [sage] 2016/03/23(水) 10:07:19.06 ID:SB04Y3rp(1) AAS
RAIIに必要なのは適切なタイミングで確実に解放処理が呼ばれることであって
いつ呼ばれるかわからないデストラクタではだめ
397: デフォルトの名無しさん [sage] 2016/03/23(水) 18:24:05.29 ID:jWiL+V+6(1) AAS
かつてStandard MLの実装で、GCじゃないメモリ管理方法をやってみたのがあったな。
コンパイラが全部自動でやるからコードの見た目はSMLなんだけど、いざ動かすとGCより遅かった。
ある程度プログラマがリソース管理のためのヒントを与えないと、GCを捨てられない。
398: デフォルトの名無しさん [sage] 2016/03/23(水) 20:05:29.02 ID:JT2FURwc(2/2) AAS
>>396
おまえが言っているのはファイナライザ。
それと、デストラクタはメモリの解放なんかしないよ。デストラクトするだけ。
399(1): デフォルトの名無しさん [sage] 2016/03/23(水) 21:43:30.89 ID:SoMbpeP6(2/2) AAS
この際、呼び名はどうでも良い
参照カウンタ方式以外のGCでは、どこからも参照されなくなったことが、即座にはわからない
だから、自動で即座に開放関数を呼び出すことが出来ない→RAIIが出来ない
C#で言うところのusingみたいに、プログラマが手動で情報を与えるなら出来る
だが、usingはGCでは無い
400: デフォルトの名無しさん [sage] 2016/03/24(木) 00:53:54.57 ID:smGLwjga(1) AAS
いまさら、ゲームキューブ叩いてどうするんだ?
401(1): デフォルトの名無しさん [] 2016/03/26(土) 05:40:22.28 ID:vD3g1idC(1) AAS
>>393
間違い
マークスイープのように負荷が集中しないだけでありパフォーマンスへの影響はある
特にツリー状のデータついてルートが削除された時子要素もデクリメントする必要があるため負荷が大きい
カウンタはオブジェクト毎に持つためコピーオンライトとの相性が悪い
また言語の機能として実装されなければ明示的に行う必要がある(例えばCとか)
そのためgcない言語ではマークスイープと比べ非常に面倒なことになる
402: デフォルトの名無しさん [sage] 2016/03/26(土) 10:35:48.15 ID:GKwGPSgf(1) AAS
androidで原因不明のフリーズが発生、プロジェクトはデスマーチに突入した
これだからGCは
上下前次1-新書関写板覧索設栞歴
あと 318 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.029s