Android „Pamięć wewnętrzna” używana, ale nie zgłoszona

9

Jako właściciel Nexusa One z Gingerbread nieustannie walczę o zachowanie wolnego miejsca w pamięci wewnętrznej mojego telefonu. Dzisiaj zauważyłem coś dziwnego.

W dolnej części ekranu „Zarządzaj aplikacjami” Andorida znajduje się wykres słupkowy, który zgłasza „Pamięć wewnętrzna” telefonu (mam 29 MB wolnego miejsca). Po kliknięciu aplikacji widzę miejsce na „Aplikację” i „Dane” aplikacji. W większości przypadków aplikacja jest przechowywana na karcie SD. „Dane” aplikacji są przechowywane w telefonie (jak sądzę).

Odkryłem, że nie widzę całego obrazu tego, co zajmuje pamięć wewnętrzną. Na przykład mam 29 MB wolnej pamięci wewnętrznej. Aplikacja Angry Birds, zapisana na karcie SD, ma 3,14 mln. Jego dane to 4,0 tys. Następnie usuwam Angry Birds (z trudem łapię powietrze), a moja bezpłatna pamięć wewnętrzna skacze do 31 mln. Wygląda więc na to, że uwolnił 2M, gdybym tylko spodziewał się, że zwolni 4,0K. Masz pomysł, co się tutaj dzieje?

rcourtna
źródło

Odpowiedzi:

4

Różnicę wolnego miejsca można przypisać trzem istotnym czynnikom, które mogą w końcu dać mylące informacje na temat rzeczywistej przestrzeni dostępnej w pamięci wewnętrznej:

  1. Zgłoszono wolne miejsce

    Ilość wolnego miejsca zgłoszona na końcu ekranu „Zarządzaj aplikacjami” jest zaokrąglana do MB i daje ogólne oszacowanie ilości wolnego miejsca na podstawie momentu otwarcia tego ekranu i jest od czasu do czasu aktualizowana (na podstawie moich testów dotyczących każda minuta).

    Wspomniałem o „zaokrągleniu”, ponieważ jeśli przejdziesz do panelu „Ustawienia pamięci”, otrzymasz wyraźny obraz dotyczący dostępnego wolnego miejsca, aż do KB.

  2. Przydział aplikacji

    Jak już wspomniano w t0mm13b, aplikacja może zostać całkowicie przeniesiona na kartę SD lub pozostawić część za sobą, ten problem jest bardziej związany z rozwojem samej aplikacji i nie ma standardowych zasad, których należy przestrzegać.

    Przeprowadziłem ćwiczenie z „Angry Birds” i chociaż pobieranie wspomniało o 20 MB, po zainstalowaniu zużywało 24 MB. Po przeniesieniu go na kartę SD za pomocą opcji w tym celu w ekranie „Zarządzaj aplikacjami” w pamięci wewnętrznej pozostało 1,85 MB, a także 4KB danych.

  3. Tymczasowe pliki systemowe z innych aplikacji lub uruchomionych usług

    Podczas pisania tej odpowiedzi zgłoszone wolne miejsce wahało się między 2 MB, co mówi nam, że system operacyjny stale tworzy i zwalnia miejsce w zależności od uruchomionych rzeczy.

Mogą istnieć inne czynniki, które dotyczą specyfikacji systemu plików ext4 używanych przez Gingerbread, ale nie sądzę, aby lepiej uwzględniały różnicę 2 MB.


W trzech wyżej wymienionych punktach, wykonując ćwiczenie z aplikacją, o której wspomniałeś, używając urządzenia z zapasową pamięcią Gingerbread ROM, udało mi się wyliczyć 2 MB różnicy, podobnie jak wspomniane miejsce.


Określ zajmowaną przestrzeń wewnętrzną i zewnętrzną

Po komentarzach, dotyczących sposobu, aby dokładnie wiedzieć, ile aplikacja zajmuje na urządzeniu, i będąc w stanie wyświetlić ją za pomocą pamięci zewnętrznej lub wewnętrznej, najdokładniejszą aplikacją, której obecnie używam, jest SanDisk Memory Zone firmy SanDisk Corp. dostępne za darmo ze sklepu Google Play.

  1. Otwórz aplikację
  2. Wybierz żądaną pamięć
  3. Sprawdź szczegóły na ten temat

    ScanDisk Zrzuty ekranu

Zuul
źródło
Bardzo dobre wyjaśnienie, jak zawsze, gdy robi to Zuul :) Więc powiedziałbyś, że użytkownik końcowy może w jakikolwiek sposób jasno określić, ile miejsca zajmuje aplikacja, i gdzie - bez angażowania „skomplikowanych rzeczy”, takich jak np. Użycie aplikacje terminalowe? Ponieważ mamy tutaj wiele pytań dotyczących „gdzie jest moja pamięć”, byłoby to bardzo pomocne.
Izzy
Dodając do mojego poprzedniego komentarza, ponieważ nie wyjaśniłem tego jasno: miałem na myśli określenie, ile miejsca zajmuje aplikacja na pamięci wewnętrznej i ile na pamięci zewnętrznej - tj. Aby zobaczyć, ile i gdzie. Najlepiej oczywiście, jeśli można to wszystko zobaczyć w jednym miejscu - w przeciwieństwie do tego, co pokazałem w mojej odpowiedzi dla graficznych eksploratorów pamięci.
Izzy
Wierzę, że to pliki dex aplikacji, które mają tendencję do pozostawania w tyle pamięci telefonu, gdy zostaną przeniesione do SD za pomocą standardowego Apps2SD. Więc moja teoria jest taka, że ​​im mniej plików dex aplikacji, tym bardziej wydajna staje się App2SD.
Irfan
Już zadałem sobie pytanie, czy pamięć podręczna Dalvik jest dołączona do podanego „przydziału aplikacji”. To samo dotyczy plików tymczasowych, które byłyby identyfikowalne przez ich właściciela (uid) - ale wymagałoby to pełnego skanowania systemu plików, co kosztowałoby trochę czasu i zasobów, ale teoretycznie można by to zrobić na żądanie (za pomocą przycisku ponownego skanowania).
Izzy
1
Dziękujemy za dodanie, @Zuul! Podczas korzystania z tej aplikacji: zrzut ekranu nie pokazuje podziału na „pamięć telefonu”. Czy rozróżnia partycje od /datai /data/data, co często powoduje zamieszanie (jeśli są to osobne partycje - co nie jest prawdą dla wszystkich urządzeń / wersji Androida)?
Izzy
3

Rozglądając się, znalazłem kilka przydatnych aplikacji, które ujawniają, gdzie idzie miejsce.

Po pierwsze, istnieje DiskUsage . Chociaż zrzut ekranu 1 pokazuje tutaj kartę SD, wideo na stronie sklepu z aplikacjami jasno pokazuje, że można jej również użyć w pamięci wewnętrznej - a nawet łączy do strony aplikacji, którą zwykle można znaleźć za pomocą Menu -> Aplikacje -> Zarządzaj aplikacjami . Możesz chodzić i powiększać / pomniejszać każdy obszar, jak pokazują adnotacje na zrzucie ekranu.

Moim drugim kandydatem jest Tabela rozmiarów folderów , która ma inny wygląd i, jak widać na zrzucie ekranu 2 , może również zajmować się pamięcią wewnętrzną.

Użycie dysku Tabela rozmiarów folderów

Te dwa mogą zdecydowanie pomóc w identyfikacji „wieprzy przechowywania”. Istnieje wiele innych znalezionych w playstore, które są zgodne z tą koncepcją, ale większość z nich ogranicza się do karty SD lub wymaga dostępu do konta root.

Izzy
źródło
3

Ponieważ N1 jest ściśle związany z HTC Incredible, możesz napotykać ten sam problem z małą ilością miejsca, który nęka Niesamowitych użytkowników (jak ja). Ja zapytałem powiązane pytanie , kiedy zacząłem doświadcza aplikacje siła zamykania z powodu braku miejsca na partycji a później skonsolidowane moje zrozumienie partycji danych w odpowiedzi na pytanie o false „mało miejsca” (pamięci wewnętrznej) ostrzeżenie o HTC Incredible :

... ekran ustawień mojej aplikacji pokazuje mi, jakie musi być /dataużycie (nigdy nie pełne, liczby odpowiadają /datarozmiarowi zgłaszanemu przez DiskUsage), nawet jeśli moje aplikacje są w rzeczywistości ograniczone przez znacznie mniejsze /data/data(gdzie często brakuje mi miejsca) ...

Przekonałem się, że liczba zgłaszana jako „Pamięć wewnętrzna” zgłasza coś całkowicie nieprzydatnego i, według wszystkich kont, jest bezużyteczna w pomaganiu mi w zarządzaniu pamięcią aplikacji. Zgadzam się z Izzy w jego rekomendacji DiskUsage , uważam, że jest to bardzo pomocne, szczególnie gdy jest zrootowany (z uprawnieniami roota może wyświetlać /data/dataużycie partycji). Użycie emulatora terminala do zbadania użycia było również pomocne w diagnozowaniu mojego problemu. Kiedy spojrzysz na swoje /datai /data/datapartycje, czy widzisz te same rozbieżności?

Mr. Buster
źródło
2

Brzmi to tak, jakbyś korzystał z Apps2SD lub odpowiednika, przy czym przenosząc aplikację na kartę SD, tylko część aplikacji jest przechowywana w pamięci wewnętrznej, a reszta na karcie SD.

W celu weryfikacji sprawdź swoją kartę SD i sprawdź, czy dane aplikacji nadal tam są, po niej powinna znajdować się /sdcard/Android/data/nazwa pakietu zainstalowanej aplikacji.

To normalny mechanizm Apps2SD.

t0mm13b
źródło
Dzięki, używam Link2SD. Nie zdawałem sobie sprawy, że pozostawia część aplikacji za sobą. To pomaga to wyjaśnić.
rcourtna
1

Wiele osób ma tego rodzaju problem, a ja mam ten sam. Przeniesienie aplikacji na kartę SD nieco opóźnia problem, ponieważ coś innego zapełnia pamięć wewnętrzną. W końcu się zorientowałem i działa świetnie.

Mam Galaxy Tab 7, ale wiele urządzeń z Androidem tego doświadczy. Ten nazywany /datato tak naprawdę nie tylko dane, ale to tam, gdzie Android instaluje aplikację APK i niektóre związane z nią dane. Jeśli zmusisz apk do zainstalowania na karcie SD, nadal będzie zużywał trochę /datamiejsca (niewielka ilość) na niektóre dane.

Problem, który odkryłem, polega na tym /data/tombstone, że znajdziesz 10 nazwanych plików tombstone_0#. Są to stałe / nieprzerwane informacje debugowania gromadzone przez Androida. Pliki te gromadzą się z czasem. Nie potrzebujesz tego dla zwykłego użytkownika. Usuń je wszystkie. Te 4 pliki używały 1,4 GB mojej wewnętrznej pamięci tabletu o pojemności 1,89 GB.

Aby to zrobić, musisz zrootować urządzenie. Tak musisz. I nie wybuchnie, nie martw się, zrobiłem to i wiele innych! Następnie uzyskaj program, taki jak „Root Explorer”, aby przeglądać i usuwać śmieci. Będzie żądał i uzyskał uprawnienia roota, jeśli wcześniej zrootowałeś swoje urządzenie i będziesz mógł robić, co chcesz.

Aby zrootować urządzenie, po prostu google „zrootuj Androida [mój model urządzenia]”, a powinieneś szybko znaleźć sposób zrootowania urządzenia.

Ten problem jest wadą projektową. W przypadku niskiego poziomu pamięci wewnętrznej system Android powinien uruchomić zadanie w tle, aby usunąć te śmieci.

Sylvain Huard
źródło
Zobacz także moje komentarze do podobnej odpowiedzi tutaj - nigdy nie widziałem nagrobków zajmujących więcej niż 10 MB, Twoja sprawa jest pierwsza. I nawet jeśli wymaga rootowania, aby je usunąć. PS: Ponieważ „nagrobki” są tak zwane „zrzutami rdzenia” w systemach Unix / Linux, ich rozmiar różni się w zależności od pamięci używanej przez odpowiadające im (zawieszone) procesy. Obvioulsy, twoje aplikacje były dość głodne pamięci :)
Izzy