2012-06-15 22 views
7

Thỉnh thoảng tôi nghe mọi người thảo luận về thời gian khởi động cho Java. Có vẻ như đây là một khía cạnh hiệu suất quan trọng. Nhưng nó thực sự là gì?Thời gian khởi động soạn thảo trong máy ảo Java là gì?

  • Nó tạo thành những gì?
    1. Thời gian tải lớp do tải lớp động?
    2. Hoặc chi phí biên dịch lần đầu tiên trong JVM biên dịch?
    3. Hoặc cái gì đó khác gây ra sự "chậm chạp" trong giai đoạn bắt đầu thực hiện chương trình Java?

Sau đó, câu hỏi thứ hai là

  • làm thế nào để đo thời gian khởi động cho các chương trình Java? Từ thời điểm nào đến thời điểm được gọi là thời gian khởi động?

Tôi không biết câu hỏi của mình có được hỏi đúng cách hay không; Nếu không, vui lòng cho tôi biết. Cảm ơn!

+0

Tôi luôn nghe thuật ngữ này được gọi là t o không chính thức, và tôi rất tò mò muốn xem liệu có ai đó đã ghim một định nghĩa chính thức cho nó hay không. – templatetypedef

Trả lời

1

Thời gian khởi động không được xác định chính thức. Thật vậy, hầu hết các thuật ngữ được sử dụng trong CNTT thực tế không được xác định chính thức. (Hoặc các định nghĩa chính thức bị bỏ qua.)

Nhưng nói gần đúng, đó là thời gian từ khi ứng dụng được khởi chạy đến khi ứng dụng sẵn sàng làm điều gì đó hữu ích. Điều gì xảy ra trong khi khởi động là phụ thuộc ứng dụng, nhưng nó bao gồm việc nạp lớp tĩnh, khởi tạo lớp tĩnh và (có thể) biên dịch JIT của một số lớp. Những thứ khác có thể bao gồm bắt đầu giao diện người dùng, kết nối với cơ sở dữ liệu, tải trước cấu trúc dữ liệu ứng dụng cụ thể, ứng dụng "dây", v.v.

Vấn đề với cố gắng xác định "thời gian khởi động" chính thức là bất kỳ định nghĩa nào có khả năng là không hoạt động đối với một số tập hợp con quan trọng của các loại ứng dụng. Và ngay cả khi bạn có thể xác định nó, có sự phức tạp rằng một số nhiệm vụ khởi động (hoặc khởi động) có thể tiếp tục xảy ra trong nền sau khi ứng dụng thông báo chính nó là "sẵn sàng".

(Đây không phải là một vấn đề cụ Java Hãy xem xét những "khởi động" của một máy tính xách tay;.. Tức là những gì xảy ra giữa powering nó vào và máy tính để bàn của bạn là hoàn toàn có thể sử dụng)

Làm thế nào để đo khởi động thời gian cho các chương trình Java? Từ thời điểm nào đến thời điểm được gọi là thời gian khởi động?

Cả hai của những người là tùy thuộc vào bạn để quyết định, tùy thuộc vào loại ứng dụng mà bạn đang nói đến, và những gì bạn muốn xem xét như giai đoạn khởi động cho các ứng dụng của bạn.

1

Như Stephen C đã đề cập, không có định nghĩa chính thức chung cho "thời gian khởi động".

Để hiểu rõ khái niệm này, tôi đã tìm thấy một số mô tả về Oracle's webs.

Về cơ bản, nó cung cấp một định nghĩa không chính thức. "Thời gian khởi động của một ứng dụng là thời gian để ứng dụng khởi động và sẵn sàng bắt đầu thực hiện những gì nó được yêu cầu. "Cả JVM và ứng dụng chính nó có thể ảnh hưởng đến thời gian khởi động.

Ngoài ra, nó cung cấp một số ý tưởng (điều chỉnh kích thước heap -Xms/-Xmx) để giảm thời gian khởi động. Hoặc là quá lớn hoặc kích thước heap quá nhỏ sẽ kéo dài thời gian khởi động.

hơn nữa, "Diagnosing a Slow JVM Startup" cho thấy một số manh mối để tìm ra lý do cho một chậm khởi động.

Lưu ý ở trên là tất cả trong bối cảnh JRockit JVM , nhưng ý tưởng tổng quát hơn.

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