Câu hỏi nói lên tất cả. Tôi có một cấu trúc dữ liệu tôi không thể Marshal vì một hashtable yếu .. tự hỏi nếu tôi có thể thoát khỏi nó :)Các mảng yếu được sử dụng như thế nào?
Trả lời
Một mảng yếu là một mảng con trỏ yếu. Một con trỏ yếu là một tham chiếu về một giá trị có thể được thu thập rác.
Nếu bạn sử dụng một con trỏ thông thường trên một giá trị, bạn sẽ ngăn chặn việc thu gom rác của nó cho đến khi trọng tài chính là rác được thu thập. Với một tham chiếu yếu giá trị có thể được thu thập trước khi trọng tài.
Ví dụ về sử dụng là nguồn cung cấp dữ liệu cho nhiều bồn rửa. Nếu nguồn giữ các con trỏ thường xuyên đến các bồn rửa, bất cứ khi nào một bồn rửa không còn cần thiết thì nó sẽ không được thu gom rác cho đến khi nguồn (ví dụ như có thể không bao giờ xảy ra). Nếu nguồn sử dụng các tham chiếu yếu đến các bồn rửa, thì các bồn rửa có thể là rác được thu gom trước nguồn.
Ví dụ khác là hashconsing cho một loại sử dụng hashtables yếu (có liên quan đến mảng yếu). Nhanh chóng, hashconsing là một cách để ghi nhớ tất cả các giá trị của một kiểu đã cho được tạo và sống trong chương trình. Cùng với một hàm tạo giá trị thích hợp, điều này có thể đảm bảo chia sẻ tối đa các giá trị của loại đó và cho phép thực hiện bình đẳng cấu trúc trên loại đó như là bình đẳng vật lý. Trong trường hợp đó nếu một hashtable không yếu được sử dụng, các giá trị không còn được sử dụng bởi chương trình sẽ không bao giờ được thu gom rác.
Cuối cùng, nhiều người nghĩ (sai) rằng các tham chiếu yếu là hữu ích để thực hiện bộ đệm. Giữ một ref yếu trên một giá trị, nếu nó đã được thu thập rác, tải lại/recompute giá trị. Đây không phải là một thuật toán bộ nhớ cache tốt bởi vì một bộ sưu tập rác lớn reclaims bất kỳ giá trị không còn tham chiếu. Vì vậy, thuật toán bộ nhớ đệm của bạn không có khả năng dự đoán hoặc thuộc tính hữu ích như, ví dụ, kích thước bộ nhớ cache/bộ nhớ có sẵn không vượt quá một tỷ lệ nhất định.
Sử dụng cặp tính từ bản đồ sinh học giữa cấu trúc dữ liệu của bạn và biểu diễn đồng bộ có cấu trúc tương thích với mô-đun Marshall.
Tôi không thể cung cấp cho bạn một đánh dấu cũng như James, mặc dù tôi muốn. Xem tiếp theo .. – Yttrill
Vấn đề là đây là một bảng biểu tượng cho sơ đồ OCS, điều hiển nhiên để lưu là biểu thức s trước khi biên dịch. Vấn đề là "tiết kiệm" là một phần của Dypgen, tiết kiệm một automaton, và tôi không thể dễ dàng ngắt kết nối các chương trình biên dịch từ automaton. – Yttrill
Thực ra tôi có thể làm điều đó bằng cách chỉ định mỗi hành động Parser một số nguyên, lưu và lưu riêng các biểu thức s trước khi biên dịch. Nhưng sau đó tôi có vấn đề: làm cách nào để tránh biên dịch lại mã chương trình mỗi lần sản xuất bị giảm? – Yttrill
- 1. Các mảng được truyền như thế nào?
- 2. Các tham chiếu yếu được triển khai như thế nào?
- 3. Nhận giá trị thuộc tính như mảng từ lựa chọn các yếu tố sử dụng jQuery
- 4. Các mảng được triển khai trong Perl như thế nào?
- 5. ImmutableObjectAttribute được sử dụng như thế nào?
- 6. RedirectToRoute được sử dụng như thế nào?
- 7. CATransform3DMakeRotation được sử dụng như thế nào?
- 8. Các mảng được triển khai trong java như thế nào?
- 9. Họ đã tạo bố cục như thế nào - những yếu tố nào họ đã sử dụng?
- 10. Thẻ meta viewport được sử dụng như thế nào và nó hoạt động như thế nào?
- 11. Làm thế nào để có được các yếu tố ngẫu nhiên từ một mảng
- 12. Zend_Form - Các yếu tố dựa trên mảng?
- 13. Elastic Net được sử dụng như thế nào?
- 14. GenericParameterHelper là gì và được sử dụng như thế nào?
- 15. Các giá trị của android.graphics.Matrix được sử dụng như thế nào?
- 16. Redis được sử dụng như thế nào ở Trello?
- 17. Mảng Javascript được so sánh như thế nào?
- 18. DVCS được sử dụng trong các đội lớn như thế nào?
- 19. Các loại nên được sử dụng như thế nào trong các lớp loại Haskell?
- 20. Các mẫu vectơ được sử dụng như thế nào trong các quy tắc cú pháp?
- 21. jQuery được DOM yếu tố như chuỗi
- 22. Numpy: Áp dụng một mảng các hàm cho cùng một mảng có độ dài 2d như thể nhân yếu tố? (sử dụng hàm python làm toán tử?)
- 23. PacMan: loại heuristics nào được sử dụng chủ yếu?
- 24. Làm thế nào để đúng cách tìm kiếm và phân tích một mảng sử dụng một chuỗi các yếu tố như mục tiêu
- 25. Nên sử dụng strace như thế nào?
- 26. Trong C, là các con trỏ mảng hay được sử dụng như con trỏ?
- 27. Bạn sử dụng cờ bitwise trong C++ như thế nào?
- 28. Bạn sử dụng gdb như thế nào?
- 29. Tôi sử dụng TLBIMP.EXE như thế nào?
- 30. Sử dụng các mảng với các mảng khác trong Python
Câu trả lời rất hay, cảm ơn !! – Yttrill