のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,647,269人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ+ JavaScript の質問用スレッド vol.118 +

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
402 : Name_Not - 2014/08/14(木) 03:09:35.52 ID:???.net (+33,+29,-19)
質問に質問で返すなと教えてくれる人が居なかったんだな
かわいそうに
403 : Name_Not - 2014/08/14(木) 03:11:11.95 ID:???.net (+32,+29,-18)
>>402
これは質問じゃないよ?
俺は答えはわかってる。自分の脳で考えな。って言ってるだけ。
少し高度な日本語だったかな?
404 : Name_Not - 2014/08/14(木) 03:52:34.16 ID:???.net (+27,+29,-8)
それは別人ですよ
いずれにしろ知らないなら黙っていて下さいね
405 : Name_Not - 2014/08/14(木) 05:37:52.76 ID:???.net (-11,-4,+0)
紅茶スクリプトを教えてください
406 : Name_Not - 2014/08/14(木) 16:20:31.31 ID:???.net (+4,+12,-35)
jqueryを使うとメモリーリークしないと言われますが
具体的にどんな処理してるんですか?
407 : Name_Not - 2014/08/14(木) 16:32:02.51 ID:???.net (+22,+29,-6)
誰がそんな事言ったの?
408 : Name_Not - 2014/08/14(木) 16:56:52.11 ID:???.net (-25,-29,-51)
>>406
循環参照対策、unload時にremoveEventListenerしてるだけ
過去ログ漁れば何度も話題になってるはずだが

ちなみに、上でいわれてるクロージャが掴むメモリリークはプログラマが意図せず作るバグだから別の話
409 : Name_Not - 2014/08/14(木) 17:52:27.18 ID:???.net (+27,+29,-28)
イベントリスナーを外すだけだったんですか
ありがとうございました
410 : Name_Not - 2014/08/14(木) 18:13:25.91 ID:???.net (+25,+28,-30)
逆に不用意に使うとjQueryがメモリーリークの原因になることもある
412 : Name_Not - 2014/08/14(木) 19:05:34.97 ID:???.net (+7,+9,-36)
深く考えず下記でおk
詳しくは「初心者 変数のスコープ」でググレ
413 : Name_Not - 2014/08/14(木) 19:10:42.58 ID:???.net (+11,+29,-16)
>>411
それスコープがおかしくなるんじゃね?
417 : Name_Not - 2014/08/14(木) 19:33:11.42 ID:???.net (+7,+18,-7)
>>411
変数 a の中身を残しておきたいならクロージャー使うしか無い
何をする関数かによるけど var a でいいと思う
418 : Name_Not - 2014/08/14(木) 19:35:04.11 ID:???.net (+5,+21,+0)
>>416
そう
421 : Name_Not - 2014/08/14(木) 20:18:31.10 ID:???.net (-24,-29,-103)
>>406
メモリリークの原因のほとんどが、循環参照対策、unload時のremoveEventListenerなんだから
重要な意味があるよ。

>>410
> 逆に不用意に使うとjQueryがメモリーリークの原因になることもある
それはjQueryを使わなくても同じことが起きるから関係ない。
422 : Name_Not - 2014/08/14(木) 20:22:52.12 ID:???.net (-26,-29,-58)
>>406
html()メソッドの時に、ちゃんと古い要素の
イベントとかdataとかの後片付けもしてる。

あと、ソースコード見るとカスタムイベント場合とか
emptyとか呼び出した時やAjax通信でもメモリリーク対応コードが
含まれてるね。
423 : Name_Not - 2014/08/14(木) 20:28:29.17 ID:???.net (+27,+29,-19)
世界中のJS使う人がデバッグしてるようなもんだから
その辺も色々気を使ってるわな

おかしいところ気づいて報告すると丁寧な返事くるし
424 : Name_Not - 2014/08/14(木) 21:01:35.33 ID:???.net (+30,+29,-34)
jQueryはトラバースするときに前の要素をキャッシュするから
不用意に使うと削除済みの要素がキャッシュに残り続けてGCに回収されない

たとえば
http://stackoverflow.com/questions/11930050/finding-js-memory-leak-in-chrome-dev-tools
425 : Name_Not - 2014/08/14(木) 21:44:56.90 ID:???.net (+17,+29,+0)
何それ怖い
426 : Name_Not - 2014/08/14(木) 22:24:06.28 ID:???.net (+33,+29,-16)
そんなよく分からないところでメモリーリークされても困るんですが
427 : Name_Not - 2014/08/14(木) 22:29:41.92 ID:???.net (+32,+29,-2)
>>426
わからないならわかるまで勉強すればいい
428 : Name_Not - 2014/08/14(木) 22:47:25.08 ID:???.net (+29,+26,-12)
メモリーリークの方をなんとかして下さい
429 : Name_Not - 2014/08/14(木) 23:15:04.49 ID:???.net (+31,+29,-3)
>>428
自分で何とかする努力をすればいい
430 : Name_Not - 2014/08/14(木) 23:15:27.04 ID:???.net (-24,-25,-4)
キャッシュはメモリリークではないのでは?
431 : Name_Not - 2014/08/14(木) 23:16:53.04 ID:???.net (+27,+29,-15)
ですよね? 速度を上げるためであり、
要素を消す操作をしたら、普通に消えるのですから
何の問題もないと思います。
432 : Name_Not - 2014/08/14(木) 23:20:35.42 ID:???.net (+31,+29,-8)
えっ?
問題あるんですか?ないんですか?
433 : Name_Not - 2014/08/14(木) 23:24:44.50 ID:???.net (-21,+29,-27)
>>430-431
なぜ>424を読まずに勝手な思い込みをするのかね
妄信したいなら勝手にすればいいが、流布するな
434 : Name_Not - 2014/08/14(木) 23:36:51.80 ID:???.net (-21,-30,-253)
>>433
読んでないのはあんたでしょう?

これ、メモリリークしないよ?http://jsfiddle.net/C5xCR/46/
オリジナルのhttp://jsfiddle.net/C5xCR/46/ と何が違うかわかる?

そう、このオリジナルのコードがメモリリークしてるようにみえるのは、
parentsがグローバル変数で、そこにキャッシュされてるから。

var b = 1000;
while (b--) {
var div = document.createElement("div");
div.className = "mydiv";
div.innerHTML = "<span></span>";
document.body.appendChild(div);
}
var parents = $("span").parent("div");
$("span").remove();

普通グローバル変数は使わないんで、parentsがスコープから消えた段階で
キャッシュされた参照も消えるから、全部メモリは解放される。
435 : Name_Not - 2014/08/14(木) 23:38:51.11 ID:???.net (+6,+8,-4)
オリジナルのURL間違えた
http://jsfiddle.net/C5xCR/6/
こっちが正しい
436 : Name_Not - 2014/08/14(木) 23:59:54.98 ID:???.net (-24,+29,-64)
>>434
何かの対象要素のjQueryオブジェクトを何らかの形で保持しておくこと自体は頻繁にあるだろ
同じ操作を何回もするのに毎回要素取得するほうが無駄なんだから
438 : Name_Not - 2014/08/15(金) 00:19:44.20 ID:???.net (-22,+29,-31)
グローバル変数じゃなくてもどっかに持ってたら変わらないって話をしてるんだが
439 : Name_Not - 2014/08/15(金) 00:23:39.40 ID:???.net (-17,+29,-95)
どっかに保持していても、その変数がなくなれば
メモリは開放されるでしょ?

変数が生きている間はメモリが使用され
変数が死ぬとともにメモリが開放されるのは
普通の話で、これはメモリリークとは言わない。
440 : Name_Not - 2014/08/15(金) 00:28:06.46 ID:???.net (+27,+29,-21)
>>438
グローバル変数に一切繋がってない所に保存されてるってどういう事か分かってるのか?
441 : Name_Not - 2014/08/15(金) 00:32:40.60 ID:???.net (-22,+29,-29)
>>439
ああすまん、そういう話か

狭義のメモリーリークではないけど広義では不注意でGCに回収されずに残っちゃうのもメモリーリークって言うと思うけど
442 : Name_Not - 2014/08/15(金) 00:38:51.62 ID:???.net (-27,-30,-42)
>>441

function foo() {
  a ← これグローバル変数な。
  a = new Hoge() ← Hogeインスタンス作成な
}

foo()を実行し終わっても、aは残ったままだ
これはメモリリークだ!

って言う奴はいねぇよ。
443 : Name_Not - 2014/08/15(金) 00:59:44.86 ID:???.net (+27,+29,-7)
速度のためのキャッシュじゃなくて、.end() のためでしょ
この機能は今更削れないだろうな
444 : Name_Not - 2014/08/15(金) 01:18:25.40 ID:???.net (-27,-29,-40)
domのstyleオブジェクトにひとつひとつ書き込むより
文字列で一遍に設定した方が速いですよね?
445 : Name_Not - 2014/08/15(金) 01:21:21.60 ID:???.net (-19,-7,-2)
>>444
試したら?
446 : Name_Not - 2014/08/15(金) 01:24:06.40 ID:???.net (+19,+21,-2)
試してもらえますか?
447 : Name_Not - 2014/08/15(金) 01:27:44.59 ID:???.net (+27,+29,-2)
私は嘘をつきます。

試したと言っている人は、
嘘つきです。
448 : Name_Not - 2014/08/15(金) 01:39:23.59 ID:???.net (+30,+29,-8)
>>446
自分で試しなさい
個々は水から学ぶもののためのスレッドです
449 : Name_Not - 2014/08/15(金) 01:49:45.30 ID:???.net (+27,+29,-1)
知らないなら黙っておいて下さい
450 : Name_Not - 2014/08/15(金) 01:53:30.87 ID:???.net (-7,+4,-1)
試したよ
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について