Gdy StrictMode systemu Android wykryje naruszenie przecieku obiektu (np. Aktywności), byłoby pomocne, gdybym mógł przechwycić zrzut sterty w danym momencie. Nie ma jednak oczywistego sposobu, aby to skonfigurować. Czy ktoś wie o jakimś triku, który można wykorzystać do jego osiągnięcia, np. sposób na przekonanie systemu do uruchomienia określonego fragmentu kodu tuż przed wywołaniem kary śmierci? Nie sądzę StrictMode zgłasza wyjątek, więc nie mogę użyć trik opisany tutaj: Is there a way to have an Android process produce a heap dump on an OutOfMemoryError?Android StrictMode i zrzuty sterty
5
A
Odpowiedz
7
bez wyjątku, ale StrictMode
zostanie wydrukowana wiadomość do System.err
tuż przed kończy. Tak, jest to hack, ale to działa i jak to tylko będzie włączona debugowania buduje I postać jest w porządku ... :)
w onCreate()
:
//monitor System.err for messages that indicate the process is about to be killed by
//StrictMode and cause a heap dump when one is caught
System.setErr (new HProfDumpingStderrPrintStream (System.err));
a klasa, o której mowa :
private static class HProfDumpingStderrPrintStream extends PrintStream
{
public HProfDumpingStderrPrintStream (OutputStream destination)
{
super (destination);
}
@Override
public synchronized void println (String str)
{
super.println (str);
if (str.equals ("StrictMode VmPolicy violation with POLICY_DEATH; shutting down."))
{
// StrictMode is about to terminate us... don't let it!
super.println ("Trapped StrictMode shutdown notice: logging heap data");
try {
android.os.Debug.dumpHprofData(app.getDir ("hprof", MODE_WORLD_READABLE) + "/strictmode-death-penalty.hprof");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
(gdzie app
jest statycznym polem w klasie zewnętrznej zawierającej odniesienie do kontekstu aplikacji, dla ułatwienia)
Łańcuch pasuje niezmienione od piernikowego wydania aż do galaretki, ale teoretycznie może się zmienić w przyszłych wersjach, więc warto sprawdzić nowe wydania, aby upewnić się, że nadal używają tej samej wiadomości.
Powiązane problemy
- 1. Android WebView powoduje naruszenie StrictMode.
- 2. W jaki sposób Android wykonuje zrzuty ekranu?
- 3. Android StrictMode Throwble: Wyraźna metoda zakończenia 'end' nie nazywana
- 4. Efektywne "Zrzuty ekranu" widoku?
- 5. Zrzuty widełek i rdzenia z wątkami
- 6. MapActivity with StrictMode nie działa - Pomoc
- 7. Android graficzne ogromne zużycie pamięci sterty? - LibGDX
- 8. Android manifest VM minimalny rozmiar sterty
- 9. Android dalvikvm-heap: Zacisk docelowy GC sterty
- 10. WKWebView Zrzuty ekranu
- 11. Jak wykryć użycie sterty wielkości aplikacji Android?
- 12. Nieoczekiwane sterty na Hello World Android APP
- 13. Google Analytics SDK 10.2.0 ma naruszeń StrictMode
- 14. Stos i sterty w PHP?
- 15. Jaka jest różnica między opryskiwaniem sterty, przepełnieniem sterty, przekroczeniem sterty?
- 16. Zrzuty ekranu z pomysłem Intellij
- 17. Zrzuty zawierają ścieżki z g ++
- 18. java przestrzeń sterty
- 19. przywracania stanu sterty w całej sterty
- 20. Koniec kamery i priorytet kolejki w systemie Android
- 21. Generowanie zrzutów sterty Java JRE7
- 22. Dlaczego ładowanie i zrzuty Pythona zwiększają rozmiar obiektu na dysku?
- 23. Google Play, zrzuty ekranu dla tabletów i zamawianie zdjęć
- 24. Algorytm sterty
- 25. Hibernate, SessionFactoryObjectFactory i OutOfMemoryError: java sterty przestrzeń
- 26. Fragmentacja sterty i menadżer pamięci okien
- 27. RegEx, StringBuilder i duża fragmentacja sterty obiektów
- 28. Defragmentacja Alokatora Sterty C++ i STL
- 29. Punkt kontrolny i przywracanie sterty w Ruby
- 30. Przydział pamięci stosu i stosu sterty