List[HugeObjects]
に何度も反復処理を加えなければならない場合(例えば、追加、プリペンドなど)、List
をIterator
に変換すると意味がありますので、反復するとその要素はが削除され、となります(GCはある時点でそれらを処理するため)リストをメモリの観点からイテレータに変換することは意味がありますか?
答えて
答えは "いいえ、イテレータはリストを参照しているので、イテレータを使用する限りガベージコレクションはありません。"
しかし、実際の実装(https://github.com/scala/scala/blob/v2.12.2/src/library/scala/collection/LinearSeqLike.scala#L41)を見た後、それはそれはない判明:特に「ガベージコレクションから[INGの]オリジナルの配列を防ぐ」、および
List("a").iterator.getClass().getDeclaredFields()
ない言及したコメントがあります
はthese
が唯一のフィールドであることを確認しているため、隠れた参照はありません。
しかし! List
で何をしたいのかは言いませんが、イテレータに変換できるのであれば、List
コードはおそらくリストの先頭への参照を失い、ガベージコレクタはそれを集めることができます:When is a Java local variable eligible for GC?。 この最適化をブロックするScalaによって生成されるコードの違いがありますが、私はそうは思わないでしょう。
私は実際には何も操作を実行しないことを言い、それを反復するだけです。 GCはIteratorに変換されてからリストを収集すると仮定しますが、Iterator全体を消費していなくてもGCは消費されたアイテムを収集しますか? –
「ちょうど反復」(「for」または「foreach」を意味しますか?)も操作です。確かに、それらの項目への唯一の参照がリストからのものであれば、それらは収集されます(GCが開始されると)。 –
私は 'foreach'をやっています。私は操作上、あなたがリスト上で行われた変更を意味すると思った。ありがとう! –
- 1. このようにサブクラスを親クラスに変換することは意味がありますか?
- 2. キャッシュは管理上の観点からMarklogicで何を意味しますか?
- 3. Androidのメモリにイメージをキャッシュするのは意味がありますか?
- 4. リストがメモリを再割り当てすると、リスト::イテレータを更新する必要がありますか?
- 5. OpenNLPで意味のあるものは意味がありますか?
- 6. コントローラーをテストすることは意味があります
- 7. このシンボルとは何ですか?:PHPでは意味がありますか?
- 8. これをテストする意味がありますか? (リポジトリパターン)
- 9. このデザインは意味がありますか?
- 10. GADTヘッドのタイプ変数は意味がありますか?
- 11. 客観的な意味での意味は何ですか?
- 12. MVVMを放棄することはいつ意味がありますか?
- 13. このpython forループにトリプルアンダースコアの意味はありますか?
- 14. これは何を変換する意味ですか?
- 15. 静的なconstexpr変数は意味がありますか?
- 16. WebWorkerにWebSocketを置くことは意味がありますか?
- 17. IntegerからintValueを取得すると、意味がありますか?
- 18. StompClient SENDリクエストから約束をするのは意味がありますか?
- 19. Python:サブパッケージをインポートするのは意味がありますか?
- 20. Activity.mayStop()はどれくらい意味がありますか?
- 21. このPerlの行は意味がありませんか?
- 22. typedefとusingが意味的に同等であることは何を意味しますか?
- 23. これを削除するのはJSで意味がありますか?
- 24. 開くことができなかったファイルを閉じることは意味がありますか
- 25. igraph ego()リストを意味のあるデータフレームに変換するにはどうすればよいですか?
- 26. >>はCに何らかの意味がありますか?
- 27. コレクションにJavaのイテレータが複数あることはありますか?
- 28. RubyのJavaの観点から、「自己」と「新規」の意味は何ですか?
- 29. 条件に余分なかっこは意味がありますか?
- 30. 「x-frame-options」を安らかなAPIに追加することは意味があります
私は質問が下落した理由を知りたいです。これはJVM GCの動作、特にScalaに関する質問です。これがどのように管理されているかについての洞察を与えることができる同様の質問は見つかりませんでした。 –