リークされたメモリがkernel_taskに割り当てられているように見えるのはなぜですか。また、OS Xがガベージコレクションできないのはなぜですか
一部のアプリケーションでメモリリークが発生している兆候kernel_taskは、メモリフットプリントが大きく、一般にギガバイトのオーダーであるということです。異常kextがこのメモリ使用量を引き起こしている場合、割り当てられたメモリと割り当てられると予想されるメモリとの間に矛盾があることが予想されます。 diff <(kextstat|tr -s ' ' | cut -d ' ' -f 5) <(kextstat| tr -s ' ' | cut -d ' ' -f 6) 「Wired」および「Name」という単語以外の何かを返します。 論文を書いている間、プレビューで開いているPDFを変更すると、しばしば悪いことが起こることに気づきました:時折、メモリ使用量がkernel_task約8ギガバイト以上になることがあります。プレビューを強制終了すると、すぐに通常の状態に戻ります。したがって、明らかに何かが間違っています-そして、プレビューはこれらの条件下でメモリをリークしています。 だから、私の質問は次のとおりです:のフットプリントの突然の予期しない増加を介してプロセスがラムをリークしたことを知っている場合kernel_task、なぜOS Xは何かが間違っていることを知ることができません。プレビューを削除すると、失われたmalloc()「d」メモリが復元される場合、ダーウィンがガーベッジコレクションを自動的に行わないのはなぜですか? メモリ管理の仕組みについて根本的な誤解はありますか? 編集:(15/9/15) これが私が話していることのデモンストレーションです。まず、メモリ使用量が高いことに気付きますkernel_task(プレビューは開いており、アクティビティモニターの下部に表示されます。333MiBのRAMを使用しています)。 以下のアシュリーによる有益な発言に続いて、各kextの使用量を調べてみましょう。 $ kextstat | awk 'NR==1{ printf "%10s %s\n", $5, $6; } NR!=1{ printf "%10d %s\n", $5, $6; …