2010-03-28 31 views
26

Lợi ích của việc thiết lập tham số -Xms là gì và có bộ nhớ ban đầu lớn hơn chẳng hạn, sau đó là bộ nhớ mặc định (64 MB trong trường hợp của tôi, theo Java GC tunning: http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html#par_gc.ergonomics.default_size) ?Các hiệu ứng kích thước ban đầu của Java -Xms

Ngoài ra, có bất kỳ điều gì tốt để đặt cả ký ức ban đầu và tối đa về cùng kích thước không?

Cảm ơn.

Trả lời

31

Lợi ích là có một hình phạt hiệu suất khi bạn sử dụng hết số lượng mà nó phải được thay đổi kích cỡ. Nếu bạn đặt nó ban đầu là 64MB nhưng hóa ra ứng dụng của bạn dưới tải cần 250MB, khi bạn nhấn gần 64MB, JVM sẽ phân bổ không gian heap hơn và có thể di chuyển xung quanh một số đối tượng và thực hiện việc lưu giữ sách khác. Điều này tất nhiên cần có thời gian.

Khi ứng dụng của bạn đang được tải, bạn muốn tất cả các tài nguyên dành riêng để chạy, vì vậy công việc phụ này có thể khiến ứng dụng phản hồi chậm hơn hoặc thậm chí trong một số trường hợp nó có thể bị lỗi nếu hết bộ nhớ trước heap được thay đổi kích cỡ.

Đôi khi khi sử dụng ứng dụng Java, bạn sẽ thấy các hướng dẫn như "đặt XmsXmx cho cùng một giá trị". Điều này được thực hiện để tránh việc thay đổi kích thước hoàn toàn, để ứng dụng của bạn khởi chạy với đống ứng dụng đã lớn như trước đây.

+0

Từ kinh nghiệm của bạn, bạn có nên đặt Xms thành cùng giá trị như Xmx không? – SyBer

+7

Nó phụ thuộc vào ứng dụng. Nếu bạn là một tổ chức tài chính với một máy chủ chuyên dụng cho một ứng dụng hoặc một bộ ứng dụng, nó có ý nghĩa. Đặc biệt là kể từ khi một ứng dụng giao dịch với các lệnh thị trường có khả năng có thể xử lý 100 hoặc 1000 của tin nhắn/giây, với độ trễ trung bình là 2-25ms. Việc thay đổi kích thước có thể làm cho độ trễ đó thấp hơn 5000%, cho tất cả các đơn đặt hàng được gửi vào thời điểm đó. Bạn thậm chí có thể thả đơn đặt hàng. Như mọi khi, hồ sơ trước khi bạn cố gắng tối ưu hóa. – Phil

+0

Cần lưu ý rằng đối với các hệ thống có số lượng lớn JVMs hoạt động -Xms sẽ tăng dấu chân JVM trung bình, trong khi cho phép JVM tự quản lý sự lây lan heap của nó cho phép người dùng sử dụng các lược đồ thu thập bộ nhớ. – Xailor

6

Các bài viết liên quan giải thích rõ ràng đủ:

Mặc định giá trị: -Xms 3670k -Xmx 64m [...] lớn các ứng dụng máy chủ thường trải nghiệm hai vấn đề với những giá trị mặc định. One là khởi động chậm, bởi vì các đoạn mã ban đầu là nhỏ và phải được thay đổi kích thước trên nhiều bộ sưu tập chính. Một vấn đề khác khi nhấn là kích thước heap tối đa mặc định là vô lý nhỏ cho hầu hết các ứng dụng máy chủ. Các quy tắc của ngón tay cái cho máy chủ các ứng dụng bao gồm:

  1. Trừ khi bạn có vấn đề với tạm dừng, hãy thử cấp càng nhiều bộ nhớ càng tốt để các máy ảo. Kích thước mặc định (64MB) thường quá nhỏ.
  2. Đặt -Xms và -Xmx thành cùng một giá trị làm tăng khả năng dự đoán bằng cách xóa quyết định quan trọng nhất kích thước từ máy ảo . Tuy nhiên, máy ảo sau đó không thể bù trừ nếu bạn thực hiện lựa chọn kém.
  3. Nói chung, hãy tăng bộ nhớ khi bạn tăng số lượng bộ vi xử lý, vì việc phân bổ có thể là song song.

Bạn cũng có thể quan tâm đến số this discussion của sự cố.

3

Nếu ứng dụng của bạn yêu cầu bộ nhớ heap hơn 64 MB, việc đặt Xms thành giá trị lớn hơn sẽ cải thiện hiệu suất của ứng dụng phần nào vì VM sẽ không phải yêu cầu thêm bộ nhớ nhiều lần.

Trong hệ thống sản xuất, tôi xem xét việc đặt Xms và Xmx thành cùng một giá trị hợp lý. Về cơ bản nó nói rằng "đây là số lượng bộ nhớ heap mà VM có thể nhận được và tôi đang cống hiến nó ngay lập tức".

3

lợi ích của thiết lập các tham số -Xms, và có bộ nhớ ban đầu lớn hơn ví dụ là gì, sau đó mặc định tính một

Nếu đống ban đầu là nhỏ và phải được thay đổi kích cỡ trên nhiều yếu bộ sưu tập, khởi động sẽ chậm.

Ngoài ra, có bất kỳ điều gì tốt để đặt cả ký ức ban đầu và tối đa về cùng kích thước không?

Đặt -Xms-Xmx cho cùng một giá trị mang lại cho bạn khả năng dự đoán. Điều này đặc biệt quan trọng khi định cỡ JVM trong quá trình điều chỉnh hiệu suất. Nhưng JVM sẽ không thể bù đắp bất kỳ quyết định xấu nào.

Tôi có xu hướng sử dụng cùng giá trị cho máy chủ sản xuất (được điều chỉnh trong khi kiểm tra hiệu suất).

+0

Bạn có thể cung cấp suy nghĩ của mình về stackoverflow.com/questions/39652282/… và stackoverflow.com/questions/39652282/… không? Cảm ơn trước – emilly

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