2010-08-26 29 views
14

Tôi đã tự hỏi liệu kích thước của tệp jar có bất kỳ tác động nào đối với sự tương đồng của Máy ảo Java không?Kích thước của tệp jar có ảnh hưởng đến hiệu suất của JVM không?

Sẽ có điểm mà tệp jar quá lớn để JVM không thể hoạt động hiệu quả?

+0

Gần đây và có liên quan: http://stackoverflow.com/questions/3314815/does-a-war-file-size-affect-in-some-way-the-application-and-or-application-server – JoseK

Trả lời

10

Có, kích thước tệp jar có tác động đến hiệu suất. Câu hỏi phù hợp hơn, nó có bất kỳ ý nghĩa quan trọng nào không? Câu trả lời cho câu hỏi đó là không.

Có, có một điểm mà tệp jar trở nên quá lớn và ảnh hưởng đến JVM. Tôi không biết nó ở đâu, nhưng nó ở đâu đó gần kích thước bộ nhớ hệ thống của bạn. Nếu JVM không thể tải toàn bộ tệp JAR và các thư viện Java trong bộ nhớ hệ thống mà không hoán đổi, điều này chắc chắn sẽ ảnh hưởng đến hiệu năng.

Đây không phải là điều bạn cần quan tâm. Không bao gồm các tệp JAR trong classpath không được sử dụng. Không bao gồm một loạt mã trong tệp JAR dự án của bạn mà không được sử dụng. Tôi rất nghi ngờ bạn sẽ tạo một ứng dụng ở bất kỳ đâu gần kích thước cần thiết để tác động đến hiệu năng của JVM.

+0

Yup , có rất ít thời gian khi kích thước jar quan trọng. Nó có thể quan trọng hơn khi phân phối ứng dụng dành cho máy tính để bàn, vì không ai muốn tải xuống 500 MB cho một chương trình đơn giản. Đối với các ứng dụng phía máy chủ, nó sẽ mất rất nhiều "công việc" để được quá lớn mà nó quan trọng ... – bwawok

+1

Tôi hoàn toàn đồng ý với điều này, và kinh nghiệm của tôi đã rất giống nhau. Nơi thông thường nơi hiệu suất bị tổn thương lâu trước khi kích thước lớp học trong thuật toán, hoặc nếu bạn có một lớp rất lớn. – aperkins

+1

Thủ phạm lớn nhất của bloat jar là các ứng dụng web/doanh nghiệp, đặc biệt khi được xây dựng với Maven. Vì vậy, nhiều phụ thuộc và phụ thuộc của phụ thuộc được kéo vào trong đó nó không phải là không phổ biến cho một ứng dụng có kích thước khiêm tốn để vượt quá 50Mb của các tập tin jar. – locka

0

Theo tôi, kích thước của bình không phải là yếu tố để xem xét khi cố gắng tăng hiệu suất.

Nếu bạn có lọ lớn, điều đó có nghĩa là bạn có nhiều mã. Nếu bạn có nhiều mã vì bạn đang làm việc trên một dự án phức tạp, tất cả đều ổn cho tôi. Nếu bạn có lọ lớn cho một dự án "đơn giản" nó có thể có nghĩa là mã cần phải suy nghĩ lại => Các lớp được thiết kế tốt thường là cách để đạt được kích thước mã nhỏ hơn và do đó các lọ nhỏ hơn.

Các vấn đề liên quan