2015-10-12 11 views
5

Lý do kỹ thuật nào không có cách nào để lưu một số loại hình ảnh JVM sau khi đã làm nóng nó lên? Giả sử rằng tôi muốn tiếp tục trên cùng một nền tảng (vì vậy mọi thứ JIT sẽ vẫn hoạt động).Serialize HotSpot State

+0

Vui lòng cung cấp nỗ lực của bạn. – manetsus

Trả lời

6

Tùy thuộc vào JVM bạn sử dụng có chức năng như vậy. JRockit là reported to be able đến, đối với JRE "bình thường" của người tiêu dùng là JEP 145 tồn tại nhưng rõ ràng là không thực hiện được.

Có một số câu hỏi về chủ đề này đã có ở đây trên SO, hãy thử this one chẳng hạn.

Đối với Oracle JVM thông thường, không có chức năng như vậy tồn tại, bạn có thể fiddle với CodeCache để có chức năng biên dịch trong thời gian sớm nhất có thể hoặc "warm up" JVM của bạn.

Bộ nhớ cache JVM vẫn tồn tại mang một số rủi ro, như trường hợp với tất cả bộ đệm. Trạng thái JIT sẽ cần phải được vô hiệu và được tính toán lại khi mã của bạn thay đổi. Nếu điều này sẽ không xảy ra, bạn sẽ chạy chương trình của bạn với mã cũ. Điều này có vẻ là lý do chính tại sao bộ nhớ cache lưu trữ trên đĩa này được giới hạn trong JVM "chuyên nghiệp". Ngoài ra việc tối ưu hóa JIT xảy ra vào lúc bắt đầu được xem là đủ nhanh để lặp lại nó ở mỗi lần bắt đầu do đó loại bỏ nguy cơ chạy với mã lỗi thời.