ReservedCodeCacheSize
(và InitialCodeCacheSize
) là một lựa chọn cho các trình biên dịch (just-in-time) của Java Hotspot VM. Về cơ bản nó đặt kích thước tối đa cho bộ đệm mã của trình biên dịch.
Bộ nhớ cache có thể trở nên đầy đủ, mà kết quả trong những cảnh báo như sau:
Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled.
Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize=
Code Cache [0x000000010958f000, 0x000000010c52f000, 0x000000010c58f000)
total_blobs=15406 nmethods=14989 adapters=362 free_code_cache=835Kb largest_free_block=449792
Nó còn tồi tệ hơn nhiều khi tiếp theo Java HotSpot(TM) Client VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM may need to be forcibly terminated
.
Khi nào đặt tùy chọn này?
- khi có thất bại biên dịch Hotspot
- để giảm bộ nhớ cần thiết bởi JVM (và do đó rủi ro thất bại trình biên dịch JIT)
Thông thường bạn sẽ không thay đổi giá trị này. Tôi nghĩ rằng các giá trị mặc định là khá cân bằng bởi vì vấn đề này xảy ra vào những dịp rất hiếm chỉ (trong experince của tôi).
OP của bài đăng này đã viết:> -XX: ReservedCodeCacheSize = 32m Kích thước bộ nhớ cache dành riêng cho mã (theo byte) - kích thước bộ nhớ cache mã tối đa. [Solaris 64 bit, amd64 và máy chủ x86: 48m; trong 1.5.0_06 và trước đó, Solaris 64-bit và and64: 1024m.] Tôi chỉ muốn sửa rằng giới hạn trên được đề cập ở 48m phải là lỗi đánh máy. Đó là 2048m. –