Công cụ kiểm soát nhiệm vụ Java trong JDK cung cấp số liệu thống kê về phân bổ đối tượng trong TLAB mới và phân bổ bên ngoài TLAB. (Nó nằm trong Bộ nhớ/Phân bổ). Ý nghĩa của các thống kê này là gì, điều gì là tốt cho hiệu suất của một ứng dụng? Tôi có nên lo lắng nếu một số đối tượng được phân bổ bên ngoài TLAB và nếu có, tôi có thể làm gì với nó?Phân bổ trong TLAB mới so với phân bổ bên ngoài TLAB
Trả lời
TLAB là bộ đệm phân bổ địa phương chủ đề. Các đối tượng cách thông thường được cấp phát trong HotSpot nằm trong TLAB. Phân bổ TLAB có thể được thực hiện mà không đồng bộ hóa với các chủ đề khác, vì Bộ đệm phân bổ là Thread Local, đồng bộ hóa chỉ cần thiết khi một TLAB mới được tìm nạp.
Vì vậy, kịch bản lý tưởng là càng nhiều càng tốt các phân bổ được thực hiện trong TLAB.
Một số đối tượng sẽ được phân bổ bên ngoài TLAB, ví dụ như các đối tượng lớn. Điều này là không có gì phải lo lắng miễn là tỷ lệ phân bổ bên ngoài TLABs so với phân bổ trong TLABs mới là thấp.
Các TLAB được tự động định lại kích thước trong quá trình thực thi cho từng chuỗi riêng lẻ. Vì vậy, nếu một thread phân bổ rất nhiều, TLABs mới mà nó nhận được từ heap sẽ tăng kích thước. Nếu bạn muốn, bạn có thể cố gắng thiết lập cờ -XX:MinTLABSize
để thiết lập kích thước TLAB tối thiểu, ví dụ -XX:MinTLABSize=4k
trả lời được cung cấp bởi đồng nghiệp của tôi David Lindholm :)
- 1. TLAB (Bộ đệm phân bổ địa phương chủ đề) là gì?
- 2. Fortran phân bổ/deallocate
- 3. mảng động phân bổ
- 4. scanf động phân bổ
- 5. phân bổ lớp tĩnh
- 6. Lỗi phân bổ FreeRTOS
- 7. trong C: Tại sao cấu trúc phân bổ ngăn xếp tồn tại bên ngoài hàm?
- 8. Phân mảnh bên trong và bên ngoài
- 9. Phân bổ bộ nhớ ngoài JVM và sử dụng nó bên trong JVM
- 10. Phân bổ bên ngoài quá lớn cho quá trình này trong Android
- 11. Memory de-phân bổ với std :: vector tái phân
- 12. Phân bổ bộ nhớ trong C++
- 13. cách phân bổ mảng kênh trong đi
- 14. Đề án phân bổ Malloc
- 15. Các phân bổ tùy chỉnh trong STL chỉ phân bổ dữ liệu thực tế?
- 16. C++ - Phân bổ bộ nhớ trên heap sử dụng "mới"
- 17. Java GC (Lỗi phân bổ)
- 18. Nhà điều hành mới C++ làm gì ngoài phân bổ và cuộc gọi ctor?
- 19. Tại sao phân bổ const trong vector?
- 20. C++: Bộ phân bổ bộ nhớ
- 21. phân bổ lưu trữ trong C++
- 22. Phân bổ mảng song song trong PHP
- 23. Phân bổ nhiều biến trong Swift
- 24. Phân bổ ngăn xếp trong C
- 25. Phân bổ VBO hiệu quả trong WebGL
- 26. Phân bổ bộ nhớ "Lỗi: không thể phân bổ vectơ có kích thước 75,1 Mb"
- 27. Thiết kế API - phân bổ đầu ra?
- 28. Phân bổ mảng char sử dụng malloc
- 29. Có an toàn khi sử dụng phân bổ chuỗi và chuyển nhượng phân bổ không?
- 30. Thay thế phân bổ STL mặc định
https://shipilev.net/jvm-anatomy-park/4-tlab-phân bổ / – Vadzim