Kontekst: Przeprowadzam testy wydajności aplikacji Java, która jest uruchamiana przez kilka warstw pośrednich, tak, że nie jestem całkowicie pewien, czy aplikacja jest uruchamiana z flagami, które moim zdaniem są. Chciałbym mojego wniosku o włączenie do testow (przed rozpoczęciem jego testu wydajności) i zawierać w wynikach (po badaniu) informacje na temat JVM został dostrojony, takich jak:W ramach działającej maszyny JVM, jak programowo określić opcje jvm używane podczas uruchamiania?
- Który był śmieci kolektor używany?
- Czy/aktywnie robi profilowanie cpu?
- Czy/jest rejestrowanie aktywności gc?
- Czy był/jest w trybie
-Xint
lub-Xmixed
? - Był/jest
-XX:ParallelGCThreads
zestaw - jeśli tak, do czego, a jeśli nie, jaki jest domyślny dla tej kompilacji? - Było/jest
-XX:UseCompressedOops
włączone lub wyłączone? - itp
Czy jest jakiś sposób na kod Java (JVM w uruchomionym) kwerendy rzeczywiste opcje używane do jego zawierającej JVM? (Załóżmy, że nie widzę linii poleceń, która uruchomiła mnie, więc nie mogę ponownie przeanalizować tych flag.)
Jeśli nie ma ogólnego sposobu, aby to ustalić, odpowiedzi, które są specyficzne dla pożądana jest również konkretna implementacja JVM.
UPDATE:
To ważne rozwiązanie, aby móc wiedzieć, jakie są wartości domyślne dla dowolnej wartości, które nie są wyraźnie dostarczane na linii poleceń. W przeciwnym razie, będzie wymagało to wiele (nużących błędów) prac, aby sprawdzić, jaka jest domyślna wartość danej kombinacji JVM/platforma/wersja/architektura. Testuję na różnych maszynach JVM, więc nie chcę ręcznie wymyślać, jakie jest domyślne ustawienie dla każdego parametru w każdym wydaniu jvm.
Możesz wyświetlić proces JVM rozpoczęty przez PID za pomocą 'ps -ef' i tam możesz zobaczyć cały argument wejściowy tego procesu. To powinno działać dla dowolnego typu maszyny JVM. –
@AlesJ. OP stwierdził, że podejście linii poleceń nie jest opcją –
@AlesJ. - to dałoby mi tylko jawnie ustawione wartości, więc nie otrzymałbym żadnych informacji o domyślnych wartościach domyślnych maszyny JVM (patrz pytanie o aktualizację do pytania). :-( – Mickalot