Piszę aplet Javy, aby działał inaczej pod innym sprzętem. Na przykład, jeśli wiem, że komputer ma dużą ilość pamięci RAM, ale słabego procesora, mogę zmienić bilans kompromitacji pamięci czasowej. Możliwość odnalezienia dokładnej marki i modelu procesora, na którym działa aplet, może być pomocna. Posiadanie takich informacji pozwoliłoby mi na porównanie mojego oprogramowania z różnymi systemami i znalezienie wąskich gardeł.Ile szczegółów sprzętowych może aplet Java odkryć?
Generalnie co szukam jest:
- Liczba żył i/lub przetwórców
- 32 bit vs 64 bit CPU
- CPU rozmiar linii pamięci podręcznej
- wielkość L1, L2 L3 cache
- Set asocjatywność cache
- Rozmiar TLB
- Dokładne Marka/Mo del informacji o CPU informacje
- FSB
- Kwota RAM
- Kwota wymiany/Pamięć wirtualna
- JVM, w której aplet jest prowadzony
- System operacyjny działa JVM
- System Load
- Liczba używanych/nieużywanych nici Kernala
- Przepustowość połączenia z Internetem
- Memor
- Karty graficzne dostępne w użyciu
- y Jeśli system operacyjny jest wizualizowane
- zasób sieciowy używany
Czy którykolwiek z tych informacji pieczone w apletów Java. Czy istnieją biblioteki do wyszukiwania którejkolwiek z tych informacji? Aplet benchmarkingowy narzędzi do odkrywania/odgadywania niektórych z nich? Jakieś sprytne sztuczki, które możesz wymyślić?
Czy wszystkie elementy sprzętu komputerowego są blokowane. To znaczy, że aplet Javy może wykryć, że coś jest w użyciu lub jest niedostępne, próbując uzyskać do niego dostęp i odmawiając mu dostępu (może to być konkretny port TCP lub akcelerator grafiki).
Nota prawna: Wiem, że dbanie o sprzęt jest sprzeczne z ideologią Javy, która nie dba o sprzęt. Chociaż komentarze wskazują na to, że mogą być pomocne dla innych czytelników, którzy widzą to pytanie, proszę zauważyć, że takie odpowiedzi nie są tym, czego szukam.
EDIT
Dodano dodatkowe informacje:
java.lang. management dostarcza wszelkiego rodzaju informacji o systemie, na którym działa JVM.
java.lang.management.OperatingSystemMXBean zapewnia:
- getAvailableProcessors() liczba dostępnych procesorów równoważnych Runtime.availableProcessors()
- getSystemLoadAverage() Średnie obciążenie w systemie średnie obciążenie systemu do ostatniej chwili.
java.lang.management. ManagementFactory
getGarbageCollectorMXBeans() Zwraca listę ofGarbageCollectorMXBeans. Każdy GarbageCollectorMXBean można przeszukiwać za następującymi informacjami:
- getCollectionCount() liczba GC, które wystąpiły przy użyciu tej Bean.
- getCollectionTime() przybliżony skumulowany czas, który upłynął między wartościami gc w milisekundach. (Uwaga: Wirtualna maszyna Java realizacja może używać wysokiej rozdzielczości stoper do pomiaru czasu, który upłynął .)
- getName() nazwa menedżera pamięci.
- getMemoryPoolNames() pule pamięci, którymi zarządza ten gc.
getThreadMXBean() zwraca ThreadMXBean który stanowi:
- getCurrentThreadCpuTime() Zwraca całkowity czas procesora dla bieżącego wątku nanosekund. Jeśli implementacja rozróżnia czas trybu użytkownika i czas trybu systemowego, zwrócony czas procesora to czas, w którym bieżący wątek został wykonany w trybie użytkownika lub trybie systemowym.
- getRuntimeMXBean powraca RuntimeMXBean
- getUptime() uptime maszyny wirtualnej Java w milisekundach.
- getStartTime() Czas uruchamiania maszyny wirtualnej Java w milisekundach.
- Zwraca argumenty wejściowe przekazane do wirtualnej maszyny języka Java, które nie zawierają argumentów metody głównej.
- getCompilationMXBean zwraca CompilationMXBean
- getName() nazwę JIT
- getTotalCompilationTime() czas w milisekundach zajęło skompilować kod.
Dobra odpowiedź, nie myślałem o używaniu awt w ogóle. Sztuczki pamięciowe przeciwko java Pracuję w tej dziedzinie od dwóch lat. Ciekawi mnie, dlaczego to robiłeś? –
Miałem kurs na architekturze pamięci podręcznej na mojej uczelni i postanowiłem sprawdzić, czy to doświadczenie może być ponownie wykorzystane w Javie. Java faktycznie zapewnia większą kontrolę nad sposobem umieszczania obiektów w pamięci: jeśli są one przydzielane w sekwencji, są zwykle przydzielane obok siebie. Ponadto członkowie prymitywnej tablicy są przydzielani obok siebie. Grałem z dostępem do elementu tablicy, uzyskując dostęp do elementów obok siebie lub losowych elementów, które mogą się znajdować daleko od siebie. Losowy dostęp na dużą skalę nie może być tak łatwo wspierany przez pamięć podręczną i trwa dłużej. –