CALayerレンダリングを使用してMacOSXアプリケーションを開発しているときに、Appleの公式サンプルコード「CALayerEssentials」がOSX10.7.4を搭載した新しいMacBookPro(Mid 2012 15'Retina)でメモリリークを引き起こす可能性があることがわかりました。
メモリリークの概要:
- Xcodeで「CALayerEssentials」プロジェクトを実行します。(このプロジェクトは、Xcode Organizer-> OS X 10.7 Core Library-> Graphics&Animation-> Animation-> CALayerEssentialsにあります)
- Instruments Leaksテンプレートを開き、CALayerEssentialsプロセスIDに添付します。
- 記録を開始すると、リークは約10秒ごとにメモリリークが発生していることを示します。
- Leaks Objectパネルには、カウントとメモリサイズが増加するアイテム「Malloc48Bytes」があります。
- 約15分後、リークサイズは約2.48MBに増加します。
- 約78分後、リークサイズは約23.54MBに増加します。
- vmmap結果アドレス領域のリークアドレスをチェックすることにより、すべてのアドレスが次の行のようにQuartzCore_0x6bb2a800と関係があることを示します。
MALLOC_OTHER 086af000-086d1000 [136K] rw- / rwx SM = COW QuartzCore_0x6bb2a800
CALayerEssentialsを実行し、そのメモリリークを監視するスクリーンショットは次のとおりです。http: //smartsweetie.com/uploads/screenshot1.png
メモリリークマシンのシステム構成は次のとおりです。
- マシン:MacBook Pro(Mid 2012、15'Retina)
- プロセッサー:2.3 GHz Intel
- Core i7メモリ:8 GB 1600 MHz DDR3
- グラフィック:NVIDIA GeForce GT 650M 1024 MB
- ソフトウェア:Mac OS X Lion 10.7.4(11E2620)
ただし、他のマシンで同じCALayerEssentialsを実行しても、CALayerのメモリリークの問題は発生しません。
- マシン:MacBook Pro(2011年後半、15フィート)
- プロセッサー:2.2 GHz Intel Core i7
- メモリ:4 GB 1333 MHz DDR3
- グラフィック:AMD Radeon HD 6750M 512 MB
- ソフトウェア:Mac OS X Lion 10.7.4(11E53)
OS X10.7.4を搭載した新しいMacBookProでのCALayerメモリリークに関する既知の問題はありますか?または、この問題をさらに調査するためのアドバイスはありますか?