解決済み-手動管理(ガベージコレクターをバイパスする)とマップされたNSDataオプションの組み合わせを使用しました。結局のところ、iStatには正しいメモリの数値がなく、Instrumentsは期待される動作を示していました。さらに、CC_MD5()およびCC_SHA1()呼び出しは、実際にはすでにCC_MD5_Update()およびCC_SHA1_Update()を呼び出しているため、どちらも問題を引き起こしていません。
私は現在、SHA-1とMD5を使用して大量のファイルをハッシュする必要があるCocoaアプリケーションに取り組んでいます。CC_MD5とCC_SHA1を使用しており、ファイルをNSDataオブジェクトに読み込んでいます。ただし、これは大量のRAMを使用し、NSDataオブジェクトが参照されていなくても、何らかの理由でふるいのようにメモリをリークします…ガベージコレクターが追いつくのに苦労しているのではないかと思います。
このような大規模なファイルに対してMD5およびSHA-1ハッシュを実行するための最良の方法(可能な場合は最も簡単ですが、速度を上げるために余分な作業を行うことを嫌がりません)は何ですか?
ファローアップ
以下で説明するように、マップされたNSDataが役立つ場合がありますが、別のオプションを見つけたと思います。それでもいくつかの作業が必要ですが、はるかに堅牢なソリューションのようです。アイデアは、NSFileHandleを使用して「チャンク」を読み取ることです。したがって、一度に最大256MBになる可能性があります。次に(たとえばMD5の場合)CC_MD5()を使用し、続いて一連のCC_MD5_Update()を使用して、ハッシュをチャンクで計算します。それを手動のメモリ管理と組み合わせると役立つはずです。