2011-02-10 40 views
8

Say, "chạy myApp.jar với cpu = 800 và bộ nhớ = 1024"Hạn chế bộ nhớ và CPU sử dụng java ứng dụng của

Ive được làm lập trình java trong nhiều năm và nó là một embarrasment để hỏi câu hỏi này. Tôi thậm chí không biết liệu điều này là có thể hay không. Và nếu vậy, làm thế nào?

Điều tôi chỉ muốn biết là nếu có thể đặt bộ nhớ tối đa của chương trình java và sử dụng cpu. Tôi đột nhiên nghĩ về điều này vì gần đây tôi đã bắt đầu phát triển các ứng dụng dành cho thiết bị di động. Tôi muốn biết ứng dụng sẽ hoạt động như thế nào trên thiết bị có bộ nhớ và bộ xử lý rất hạn chế.

Tôi đã thấy các công cụ vật lý có các ứng dụng demo chạy trên trình duyệt hoặc tôi có thể thực thi trên máy tính của mình. Nếu tôi chạy chúng trên thiết bị di động thì sao? Hiệu suất sẽ giống nhau không? Thay vì phát triển một ứng dụng mẫu di động để kiểm tra hiệu suất của thư viện, tôi muốn chạy nó với một cpu và bộ nhớ cụ thể bằng cách sử dụng máy tính của tôi đầu tiên.

Tôi đã cố gắng googling bằng cách ... tất cả tôi thấy là giám sát và điều chỉnh hiệu suất. Tôi có thể đang sử dụng từ khóa sai.

Trả lời

8

bạn có thể giới hạn mức sử dụng bộ nhớ theo tùy chọn -Xmx và bạn có thể giới hạn mức sử dụng CPU bằng cách đặt mức độ ưu tiên của quy trình và/hoặc mối quan hệ CPU.

+0

Cảm ơn bestsss. Tôi sẽ thử nó. – demotics2002

+2

Trên Linux, bạn có thể chạy JVM với ái lực CPU được chỉ định bằng cách sử dụng 'taskset (1)', điều này không rõ ràng đối với nhiều người. Không có cách nào để thiết lập mối quan hệ CPU từ một JVM chạy bằng máy. (bạn có thể làm JNI ma thuật, nhưng thar được con rồng.) – andersoj

+0

có, bạn không thể đặt ái lực cũng không ưu tiên xử lý bằng các tùy chọn java tiêu chuẩn tôi biết ... trên cửa sổ lệnh bạn cần là bắt đầu (trên cửa sổ 32 bit nó không 't có tùy chọn ái lực, mặc dù) – bestsss

1

Trong trường hợp này, có thể giúp chạy ứng dụng trên trình mô phỏng thiết bị di động (ví dụ: Android).

Với điều này, bạn có thể mô phỏng thiết bị di động với CPU/Bộ nhớ cụ thể. Vì vậy, bạn sẽ nhận được hiệu suất này là tương đương với một thiết bị có CPU chậm hơn và RAM thấp hơn.

Trình mô phỏng Android/Nokia hoàn toàn miễn phí và có sẵn để tải xuống từ các phần dành cho nhà phát triển của các trang web Nokia/Google.

0

https://github.com/haosdent/jcgroup jcgroup là lựa chọn tốt nhất của bạn. Bạn có thể sử dụng thư viện này để giới hạn số lượng CPU, tốc độ Đĩa I/O, Băng thông mạng và v.v.

1

JVM không kiểm soát việc sử dụng CPU cũng như mức độ ưu tiên.

JVM có quyền kiểm soát tối đa/phút Mức sử dụng bộ nhớ.

Có một giải pháp thay thế. Có thể chạy mỗi JVM trong một riêng biệt Docker container. Và kiểm soát việc cấp phát tài nguyên (Bộ nhớ, CPU, Mạng, IO) cho mỗi vùng chứa. Đó chính xác là giá trị gia tăng của các vùng chứa Docker.

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