Mam obiekt statyczny w czasie wykonywania, który jest po prostu listą innych obiektów (int, ciągi, słownik, inne obiekty, itp.). Czy istnieje sposób na określenie pamięci używanej przez mój statyczny obiekt "lista innych obiektów" w środowisku wykonawczym? Byłoby to przydatne do celów oprzyrządowania i raportowania.Jaki jest ślad pamięci obiektu w środowisku wykonawczym w .NET?
Odpowiedz
Prawdopodobnie pytasz o coś, co możesz wywołać ze swojego kodu (co również chciałbym wiedzieć), ale czułem, że powinienem wspomnieć profilera Ants [http://www.red-gate.com/Products/ants_profiler/index.htm], w przypadku, gdy inni nie szukają czegoś tak konkretnego. Poinformuje Cię o wszystkich rodzajach informacji o kodzie podczas jego wykonywania, w tym o tym, ile pamięci jest używane.
Z ich strony internetowej ...
pamięć profilu zrozumieć, jak aplikacja wykorzystuje pamięć i zlokalizować wycieków pamięci. Profiler pamięci umożliwia robienie migawek w dowolnym punkcie w wykonaniu programu , dzięki czemu można sprawdzić, jaka pamięć jest w tym momencie używana. Możesz pobierać kilka migawek w różnych czasach podczas działania aplikacji, dzięki czemu można porównywać stany pamięci aplikacji .
sizeof może być stosowany na typów wartości istnieje również Marshal.SizeOf który może być używany z niektórych podpowiedzi do .NET:
Ale ... to nie jest dokładnie to całkowita Koszt, ponieważ środowisko wykonawcze przydziela dodatkowe bajty dla klas takich jak bloki synchronizacji.
Jeśli jesteś naprawdę zainteresowany pomiaru tego typu rzeczy, jednak należy użyć API profilowania:
http://msdn.microsoft.com/en-us/library/ms404386.aspx
lub bezpłatne narzędzie jak WinDbg że można zrobić wszystkie rodzaje cudownych rzeczy.
Nie bez profilera. Jest wystarczająco twardy tylko dla jednej klasy - patrz here.
Dzięki za odpowiedzi. Myślę, że mój początkowy plan ataku, ponieważ jestem pewien, że większość obiektów będzie można serializować, będzie mniej więcej tak:
using (MemoryStream memstream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(memstream, myObjectOfObjects);
mem_footprint += memstream.Length;
}
catch
{
// not a serializable object
}
}
- 1. Rozmiar obiektu w środowisku wykonawczym
- 2. Określenie hierarchii klas obiektu w środowisku wykonawczym
- 3. W jaki sposób __builtin__ jest udostępniany w środowisku wykonawczym?
- 4. Czy możesz wyjaśnić tę dziwaczną awarię w środowisku wykonawczym .NET?
- 5. włączyć HeapDumpOnOutOfMemoryError w środowisku wykonawczym
- 6. Jak określić rzeczywisty typ obiektu w środowisku wykonawczym w C++;
- 7. Dlaczego okno jest większe w środowisku wykonawczym?
- 8. Konfiguracja hibernacji w środowisku wykonawczym
- 9. Jak mogę dodać właściwości do obiektu w środowisku wykonawczym?
- 10. Dodawanie obrazu w środowisku wykonawczym
- 11. Znajdź zależne pakiety w środowisku Eclipse w środowisku wykonawczym
- 12. Utwórz typ delegowania w środowisku wykonawczym
- 13. Dodawanie adnotacji Java w środowisku wykonawczym
- 14. Jak zmienić AndroidManifest w środowisku wykonawczym?
- 15. Jak dodać nowy węzeł MvcSitemapProvider w środowisku wykonawczym
- 16. .NET 4.5: błąd wewnętrzny w środowisku wykonawczym .NET (80131506)/wyłączanie współbieżnego GC
- 17. Ślad pamięci mapy Apple
- 18. Wykryj przyspieszenie sprzętowe w środowisku wykonawczym: Android
- 19. Sprawdzanie wersji modułu Python w środowisku wykonawczym
- 20. Sprawdź wersję systemu iOS w środowisku wykonawczym?
- 21. Tworzenie tabel dynamicznie w środowisku wykonawczym
- 22. Architektura wtyczek do załadowania w środowisku wykonawczym
- 23. Java: Rozszerzanie klasy w środowisku wykonawczym
- 24. Załaduj kod bajtów Java w środowisku wykonawczym
- 25. Jak konwertować typy w środowisku wykonawczym?
- 26. Dodawanie klas jednostek dynamicznie w środowisku wykonawczym
- 27. Android - Zmień układ fragmentów w środowisku wykonawczym
- 28. Uzyskiwanie danych wyjściowych procesu w środowisku wykonawczym
- 29. Ślad pamięci unique_ptr
- 30. Jak przesłonić FetchType.EAGER, aby być leniwym w środowisku wykonawczym
Naprawdę szukam programowego wdrożenia. Zgadzam się jednak, że ANTS Profiler może być z pewnością przydatny w odpowiednich sytuacjach :) – Bullines