Tôi đã đọc trên các luồng Java 8 và cách dữ liệu được truyền trực tiếp từ nguồn dữ liệu, thay vì có toàn bộ bộ sưu tập để trích xuất dữ liệu.Dòng Java 8 vs Bộ sưu tập Bộ sưu tập
quote này nói riêng tôi đọc trên một bài báo liên quan đến con suối trong Java 8.
"Không lưu trữ Streams không có lưu trữ cho các giá trị;. Họ mang giá trị từ một nguồn (mà có thể là một cấu trúc dữ liệu, một hàm tạo ra, một kênh I/O, vv) thông qua một đường dẫn của các bước tính toán. " Từ nguồn: http://www.drdobbs.com/jvm/lambdas-and-streams-in-java-8-libraries/240166818?pgno=1
Tôi hiểu khái niệm về truyền dữ liệu từ nguồn từng mảnh. Điều tôi không hiểu là nếu bạn đang phát trực tuyến từ bộ sưu tập thì không có bộ nhớ nào? Bộ sưu tập đã tồn tại trên Heap, bạn chỉ đang truyền dữ liệu từ bộ sưu tập đó, bộ sưu tập đã tồn tại trong "bộ nhớ".
Sự khác biệt về dung lượng bộ nhớ là gì nếu tôi chỉ lặp qua bộ sưu tập với tiêu chuẩn cho vòng lặp?
Cảm ơn bạn đã trả lời! Tôi hiểu phần truyền dữ liệu, nhưng chi phí bộ nhớ (lưu trữ) là gì nếu tôi chỉ sử dụng bộ sưu tập trực tiếp thay vì phát trực tiếp bộ nhớ đó? Nếu tôi sử dụng bộ sưu tập trực tiếp, tôi truy cập bộ sưu tập trên heap, nếu tôi phát trực tiếp bộ sưu tập đó, tôi vẫn đang truyền dữ liệu từ bộ sưu tập nằm trên heap. Dù bằng cách nào thì dấu chân bộ nhớ vẫn giống nhau trong cả hai phương pháp. Xin vui lòng sửa tôi nếu tôi sai/thiếu một cái gì đó ở đây. – user3587411
@ user3587411: Về cơ bản không có sự khác biệt. Một cách có thể sử dụng một vài khung ngăn xếp và các đối tượng tạm thời, nhưng đó chỉ là một vài byte. – user2357112
* "Dù cách nào thì dấu vết bộ nhớ vẫn giống nhau trong cả hai phương pháp." * Mục đích của luồng không phải là để tiết kiệm bộ nhớ. – Radiodef