Tôi đang viết một Java applet để chạy khác nhau theo phần cứng khác nhau. Ví dụ, nếu tôi biết một máy tính có một lượng RAM lớn nhưng một bộ xử lý yếu, tôi có thể thay đổi số dư của một số lần cân bằng bộ nhớ thời gian. Có thể khám phá chính xác và mô hình của CPU mà trên đó applet đang chạy có thể hữu ích. Có những thông tin như vậy sẽ cho phép tôi đánh giá phần mềm của mình dựa trên các hệ thống khác nhau và tìm thấy tắc nghẽn.Có bao nhiêu chi tiết phần cứng có thể khám phá Java Applet?
Nói chung những gì tôi đang tìm kiếm là:
- Số lõi và/hoặc xử lý
- 32 bit vs 64 bit CPU
- CPU kích thước dòng cache
- Kích thước của L1, L2 , Bộ nhớ cache L3
- Đặt tính tương hợp của bộ nhớ cache
- Kích thước của TLB
- Chính xác Make/Mo del thông tin về CPU thông tin
- FSB
- Lượng RAM
- Lượng swap/bộ nhớ ảo
- Các JVM trong đó applet đang được chạy
- Hệ điều hành chạy JVM
- Hệ thống tải
- Số chủ đề Kernal đã sử dụng/chưa sử dụng
- Băng thông kết nối internet
- Ghi nhớ y sẵn
- Card đồ họa được sử dụng
- Nếu hệ điều hành đang được hình dung
- tài nguyên mạng được sử dụng
Là bất kỳ thông tin này nướng vào Java Applet. Có thư viện nào để tìm bất kỳ thông tin nào không? Các công cụ đo điểm chuẩn của Applet để khám phá/đoán một số công cụ? Bất kỳ thủ thuật thông minh nào bạn có thể nghĩ đến?
Có bất kỳ khía cạnh nào của phần cứng máy tính đang chặn không. Đó là, một applet Java có thể phát hiện ra rằng một cái gì đó đang được sử dụng hoặc không có sẵn bằng cách cố gắng truy cập nó và bị từ chối (có thể là một cổng TCP hoặc bộ tăng tốc đồ họa).
Tuyên bố từ chối trách nhiệm: Tôi biết rằng việc chăm sóc phần cứng đi ngược lại ý thức hệ Java không quan tâm đến phần cứng. Mặc dù các nhận xét chỉ ra điều này có thể hữu ích cho những độc giả khác thấy câu hỏi này, xin lưu ý rằng những câu trả lời như vậy không phải là những gì tôi đang tìm kiếm.
EDIT
thêm thêm thông tin:
java.lang. management cung cấp tất cả các loại thông tin trên hệ thống mà JVM đang chạy.
java.lang.management.OperatingSystemMXBean cung cấp:
- getAvailableProcessors() Số lượng bộ xử lý có sẵn tương đương Runtime.availableProcessors()
- getSystemLoadAverage() Các tải bình quân trên hệ thống trung bình hệ thống tải cho vào phút chót.
java.lang.management. ManagementFactory
getGarbageCollectorMXBeans() trả về một danh sách ofGarbageCollectorMXBeans. Mỗi GarbageCollectorMXBean có thể được truy vấn cho các thông tin sau:
- getCollectionCount() số gc mà đã xảy ra bằng đậu này.
- getCollectionTime() thời gian tích lũy gần đúng đã trôi qua giữa gc theo mili giây. (Lưu ý: Java Virtual Machine thực hiện có thể sử dụng một bộ đếm thời gian giải quyết cao để đo thời gian trôi qua .)
- getName() tên của người quản lý bộ nhớ.
- getMemoryPoolNames() các bộ nhớ mà gc này quản lý.
getThreadMXBean() trả về ThreadMXBean cung cấp:
- getCurrentThreadCpuTime() Trả về tổng thời gian CPU cho thread hiện tại nano giây. Nếu việc thực hiện phân biệt giữa thời gian chế độ người dùng và thời gian chế độ hệ thống, thời gian CPU trả về là khoảng thời gian mà luồng hiện tại đã thực hiện trong chế độ người dùng hoặc chế độ hệ thống.
- getRuntimeMXBean lợi nhuận RuntimeMXBean
- getUptime() thời gian hoạt động của máy ảo Java trong mili giây.
- getStartTime() thời gian bắt đầu của máy ảo Java tính bằng mili giây.
- getInputArguments() Trả về các đối số đầu vào được truyền cho máy ảo Java không bao gồm đối số cho phương thức chính.
- getCompilationMXBean trả về CompilationMXBean
- getName() tên của JIT
- getTotalCompilationTime() thời gian trong mili giây để biên dịch mã của bạn.
Câu trả lời hay, tôi đã không cân nhắc việc sử dụng awt. Thủ thuật bộ nhớ cache chống lại java Tôi đã làm việc trong lĩnh vực này trong hai năm qua. Tôi tò mò tại sao bạn làm điều này? –
Tôi đã có một khóa học về kiến trúc bộ nhớ cache trong trường đại học của mình và quyết định kiểm tra xem trải nghiệm này có thể được sử dụng lại trong Java hay không. Java thực sự cung cấp nhiều quyền kiểm soát hơn về cách các đối tượng được đặt trong bộ nhớ: nếu được phân bổ theo trình tự, chúng thường được cấp phát bên cạnh nhau. Ngoài ra, các thành viên của mảng nguyên thủy được phân bổ bên cạnh nhau. Tôi đang chơi với truy cập phần tử mảng, truy cập vào các phần tử bên cạnh nhau hoặc các phần tử ngẫu nhiên có thể cách xa nhau. Truy cập ngẫu nhiên, quy mô rộng không thể được bộ nhớ cache hỗ trợ dễ dàng và mất nhiều thời gian hơn. –