Để tăng tốc thời gian khởi động của JVM, các nhà phát triển Sun quyết định nên biên dịch trước các lớp runtime chuẩn cho một nền tảng trong khi cài đặt JVM. Bạn có thể tìm thấy các lớp biên dịch sẵn này, ví dụ: tại địa chỉ:Tăng tốc độ khởi động ứng dụng bằng cách thêm các lớp ứng dụng riêng vào classes.jsa
$ JAVA_HOME \ jre \ bin \ client \ classes.jsa
Công ty của tôi hiện đang phát triển một ứng dụng độc lập Java mà mang JRE riêng của mình, vì vậy nó sẽ là một lựa chọn tuyệt vời để tăng tốc độ ứng dụng của chúng tôi thời gian bắt đầu bằng cách thêm các lớp ứng dụng riêng của chúng tôi vào tệp jsa này.
Tôi không tin rằng tệp JSA đã được tạo bởi ma thuật, vì vậy: Làm thế nào nó được tạo ra? Và làm thế nào tôi có thể lừa JVM kết hợp các lớp học của riêng tôi?
EDIT: Tôi đã phát hiện ra những điều sau đây:
Các classes.jsa được tạo ra bởi lệnh
java -Xshare:dump
Danh sách các lớp học để kết hợp trong bãi có thể được tìm thấy trong $JAVA_HOME/jre/lib/classlist
.
Tôi thậm chí còn quản lý thêm các lớp của riêng mình ở đây (và thêm chúng vào rt.jar để tìm java) và tạo checksum của riêng tôi bên dưới tệp danh sách lớp.
Vấn đề cuối cùng là: Chỉ có các lớp trong gói java, com.sun và org.w3c dường như được nhận diện, nếu tôi để cùng các lớp trong gói ban đầu, chúng sẽ không được tải. Tôi đã tìm kiếm toàn bộ nguồn OpenJDK cho con trỏ về điều này, nhưng dường như nó có liên quan đến các miền bảo vệ. Nếu ai đó đủ quan tâm đến chủ đề này và đủ hiểu biết, hãy thêm một số gợi ý cho tôi để đầu tư thêm.
Bạn có thể chia sẻ cách bạn tính toán lại kiểm tra không? – coppit
Tôi tìm thấy câu trả lời của mình trong một trang trình bày cho Java nhúng - có một tiện ích được gọi là AddJsum trong cây nguồn openjdk. http://www.oracle.com/technetwork/jp/ondemand/java/20110519-java-a-1-greg-400531-ja.pdf – coppit
Cảm ơn, tôi có thể thử điều này khi tôi nhận được thời gian. – Daniel