なぜ私が本当に直感的ではないのですか?なぜflush()の後にメモリが減少する代わりに増加するのですか?私はドキュメンテーションで何か役に立つものを見つけることができません。私は50ループの繰り返しごとにフラッシュしていき、フラッシュメモリの使用量が1MB増えた後にフラッシュしています。 100回のフラッシュは100MBを使用します!私はここで何が欠けていますか?私はdoctrineのWebサイトの例をclear()で見たことがありますが、私が使っていると、私のオブジェクトの1つにカスケード永続性が設定されていないという例外があります。背後で何が行われているのか誰にも分かりませんが、私はすべての教義の目的を正しく取り除くために何をすべきですか?doctrine 2.1:メモリ使用量がフラッシュ後に増加しました
答えて
問題は、エンティティマネージャがすべてのオブジェクトを処理することです。もしあなたが各X反復後にラムにオブジェクトを必要としないなら、それをリセットするべきです。これを試してみてください:
// get the entity manager and save objects and flush
$em = $this->get('doctrine')->getEntityManager();
...
$em->flush();
// then reset the entity manager
$this->get('doctrine')->resetEntityManager();
また、ここで読む:http://docs.doctrine-project.org/en/2.0.x/reference/batch-processing.html
をそれは$ EM-を使用することを示唆している>クリア()操作のすべてのバルク後。 (これはBesnikが提案したのと同じ効果をもたらすはずです)。前述のリンクから
:教義で
バルクインサートが最高 のEntityManagerのトランザクションの遅延書き込み動作の 利用して、バッチで実行されます。次のコードは、バッチサイズが20の10000 オブジェクトを挿入する例を示しています。最適なサイズを見つけるには、 バッチサイズを試す必要があります。より大きいバッチ サイズは、内部でより多くの準備文の再利用を意味しますが、フラッシュ中にはさらに の作業を意味します。
私は、一括レコード(100K以上)を挿入すると同様の状況がありました。私はRauniとBesnikの提案とDoctrineのバッチ処理のガイドに従っていましたが、$ em-> clear()とresetEntityManager()の後でさえメモリはまだ増加しました。
ORMツールが大量の挿入、更新または削除 のため、主に非常に適していない。数日後、私はDoctrineのマニュアルの情報通知を率います。すべてのRDBMSには、 のような操作を処理する最も効果的な方法があります。下記のオプションが十分でない場合は、 RDBMSのツールを使用することをお勧めします。
を使用し、生のSQL(MySQL)を使用して挿入をバッチしました。メモリ使用量はDoctrineで200MBを超え、生のSQLでは30MBになりました。ソース配列から挿入される要素をポップすると、メモリ使用量が減少することがわかりました。また、220秒から20秒まで、はるかに速くなります。
- 1. Windowsタスクマネージャー:Pythonアプリケーションのメモリ使用量が増加しました
- 2. 各FMDBクエリの後にメモリ使用量が劇的に増加します
- 3. PHPイメージを使用したメモリ使用量の増加
- 4. Rails:ワーカーが失敗してメモリ使用量が増加する
- 5. Console.WriteLine()でのメモリ使用量の増加
- 6. mysqlメモリ(RAM)の使用量がResultSet使用中に増加しますか?
- 7. doSMPとforeachを使用した並列ランダムフォレストでは、メモリ使用量が大幅に増加します(Windows版)
- 8. viewer.js/pdf.js:pdfがレンダリングされるたびにメモリ使用量が増加する
- 9. .NET Nhibernateセッションでメモリ使用量が増加する
- 10. Win32 C++のDrawTextでメモリ使用量が増加する
- 11. UINavigationControllerを使用してEAGL-Viewを押したときにiPhoneのメモリ使用量が増加する
- 12. iPhone:タッチを使用しているアプリケーションのメモリ使用量が徐々に増加しています
- 13. Java(TM)Platform SEバイナリによるメモリ使用量の増加
- 14. NHibernateを使用したWindowsサービスの使用メモリが増加しています
- 15. プリミティブ型のキャストはメモリ使用量を増減しますか?
- 16. Google App Engineでリソース使用量が異常に増加しました
- 17. Treeをクリア()するときにElementTree.iterparse()を使用すると、メモリ使用量が増加しますか?
- 18. リークのないメモリ使用量の増加?
- 19. アプリケーションの実行中にメモリ使用量が連続的に増加する(Swift)
- 20. HSQLシステムメモリ使用量が増加する
- 21. 春の起動時にメモリを大量に使用した後
- 22. CTASコマンドを使用した後にNetezzaテーブルサイズが増加しました
- 23. PostgreSQL接続のメモリ使用量が増えています
- 24. Mysqlの "メモリ使用量"が増えています
- 25. レコードの読み取りごとにメモリ使用量が増加する
- 26. UIImageView - 実際のメモリ使用量が連続的に増加する
- 27. IIS + Ajax UpdatePanelの結果、メモリ使用量が極端に増加する
- 28. ファイルへの書き込み時にメモリ使用量が増加する
- 29. TensorFlow - nn.max_poolingはメモリ使用量を大幅に増加させます
- 30. ソケットサーバーメモリ使用量が増加し、応答しなくなる