Android'in StrictMode sızan bir nesneyi (örneğin, etkinlik) ihlal ettiğinde, o anda bir yığın öbeği yakalayabilmem yararlı olur. Bununla birlikte, bunu yapmak için yapılandırmak için açık bir yol yoktur. Bunu başarmak için kullanılabilecek bazı numaralar var mı? Ölüm cezası verilmeden önce sistemi belirli bir kod parçasını çalıştırmaya ikna etmenin bir yolu var mı? Ben StrictMode bir istisna atar sanmıyorum, bu yüzden burada açıklanan trick kullanamazsınız: Is there a way to have an Android process produce a heap dump on an OutOfMemoryError?Android StrictMode ve öbek döküntüleri
5
A
cevap
7
Hiçbir istisna, ama StrictMode
o sonlandırır hemen önce System.err
bir mesaj yazdırmak yapar. Yani, bu kesmek, ama çalışıyor ve sadece hata ayıklama etkin olması için gidiyor olarak :)
onCreate()
... Ben gayet anlamaya oluşturur:
//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));
ve sevk sınıf :
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();
}
}
}
}
dizisi (app
referans kolaylığı için uygulama bağlamında bir başvuru içeren dış sınıfının içindeki bir sabit alanı, olduğu) Bu eşleşmeler, zencefilli çöreklerden jöle fasülyesine kadar değişmeden hayatta kaldı, ancak teorik olarak gelecekteki sürümlerde değişebiliyordu, bu yüzden hala aynı mesajı kullandıklarından emin olmak için yeni sürümleri kontrol etmeye değer.
İlgili konular
- 1. Android StrictMode yanlış pozitif bildiriyor
- 2. Yönetilen ve Yönetilmeyen öbek
- 3. MapActivity with StrictMode çalışmıyor - Yardım
- 4. Elasticsearch Öbek Boyutu
- 5. Haskell Öbek Sorunlar
- 6. Öbek Taşma Saldırı
- 7. Geçerli öbek uzantıları nedir?
- 8. C++: İkili Öbek
- 9. Fotoğraf makinesi amacı ve öncelik sırası Android
- 10. İlk Bellek Öbek Boyut Hatası
- 11. geçersiz olmayan dize/tampon öbek Node.js
- 12. Öbek oluştururken benzersiz bir yığın mı?
- 13. Buddy Tahsisi Algoritma - Başlangıç Öbek Adres
- 14. jQuery'nin AJAX bellek yanıtı sızıntısı mı? Öbek Fotoğraf ve garip bir şey fark ettik:
- 15. android soundpool heapsize taşma
- 16. Android: EditText - çoklu satırlar ve android: inputType
- 17. Android: shrinkColumns ve android: stretchColumns nasıl çalışır?
- 18. Android ExpandableListActivity ve SimpleCursorTreeAdapter?
- 19. Android ve MJPEG
- 20. Android Camera.autoFocus ve FOCUS_MODE_CONTINUOUS_PICTURE
- 21. Android ve ICU 5.0
- 22. Android, Scala ve Proguard
- 23. Android uygulaması ve myBatis
- 24. XMPP ve Android
- 25. android ve node js
- 26. Android: fSystemWindows ve bottomSheets
- 27. Android, images ve dpi
- 28. Android 3.0 ve üstü
- 29. android ve iphone
- 30. IntelliJ, Android ve Gradle