Lưu trữ nội bộ Android đã sử dụng nhưng không được báo cáo


9

Là chủ sở hữu của Nexus One chạy Gingerbread, tôi liên tục chiến đấu để giữ dung lượng trống trong Bộ nhớ trong của điện thoại. Hôm nay, tôi nhận thấy một điều kỳ lạ.

Phần dưới màn hình "Quản lý ứng dụng" của Andorid hiển thị biểu đồ thanh báo cáo "Bộ nhớ trong" của điện thoại (Tôi có 29M miễn phí). Khi tôi nhấp vào một ứng dụng, tôi có thể thấy dung lượng lưu trữ cho "Ứng dụng" và cho "Dữ liệu" của ứng dụng. Ứng dụng, trong hầu hết các trường hợp, được lưu trữ trên Thẻ SD. "Dữ liệu" của ứng dụng được lưu trữ trên điện thoại (tôi đoán vậy).

Những gì tôi đang tìm kiếm là tôi không nhìn thấy toàn bộ bức tranh về những gì đang chiếm dụng Bộ nhớ trong. Ví dụ: tôi có 29M miễn phí trong Bộ nhớ trong. Ứng dụng Angry Birds, được lưu trữ trên thẻ SD, là 3,14M. Đó là dữ liệu là 4.0K. Sau đó tôi xóa Angry Birds (thở hổn hển!) Và Bộ nhớ trong miễn phí của tôi nhảy lên tới 31M. Vì vậy, có vẻ như nó đã giải phóng được 2 triệu, khi tôi chỉ mong nó giải phóng được 4.0K. Có ai biết chuyện gì đang xảy ra ở đây không?

Câu trả lời:


4

Sự khác biệt về không gian trống có thể được tính bằng ba yếu tố liên quan có thể sẽ cung cấp cho bạn một số thông tin sai lệch về không gian thực có sẵn trên bộ nhớ trong của bạn:

  1. Không gian trống báo cáo

    Không gian trống được báo cáo ở cuối màn hình "Quản lý ứng dụng" được làm tròn thành MB và nó cung cấp cho bạn ước tính không gian trống chung dựa trên thời điểm bạn mở màn hình nói và nó được cập nhật theo thời gian (theo các thử nghiệm của tôi về mỗi phút).

    Tôi đã đề cập đến "làm tròn" bởi vì nếu bạn truy cập vào bảng "Cài đặt lưu trữ", bạn sẽ nhận được một hình ảnh rõ ràng về không gian trống có sẵn, xuống tới KB.

  2. Phân bổ ứng dụng

    Như t0mm13b đã đề cập, một ứng dụng có thể được chuyển hoàn toàn sang SDCard hoặc để lại một phần, vấn đề này liên quan nhiều hơn đến sự phát triển của ứng dụng và không có quy tắc chuẩn nào để tuân theo.

    Tôi đã thực hiện một bài tập với "Angry Birds" và trong khi bản tải xuống đề cập đến 20 MB, sau khi cài đặt, nó tiêu thụ 24 MB. Sau khi chuyển nó sang SDCard bằng tùy chọn cho phần cuối này trong màn hình "Quản lý ứng dụng", 1,85 MB đã bị bỏ lại trên Bộ nhớ trong, cộng với 4KB dữ liệu.

  3. Tệp hệ thống tạm thời từ các ứng dụng khác hoặc dịch vụ đang chạy

    Trong khi tôi đang viết câu trả lời này, không gian trống được báo cáo khác nhau giữa 2 MB, điều này cho chúng ta biết rằng HĐH liên tục tạo và giải phóng không gian tùy thuộc vào nội dung đang chạy.

Có thể tồn tại các yếu tố khác liên quan đến thông số kỹ thuật của Hệ thống tệp ext4 được sử dụng bởi Gingerbread, nhưng tôi không tin rằng chúng tốt hơn cho sự khác biệt 2MB.


Trong ba điểm được đề cập ở trên, trong khi thực hiện một bài tập với ứng dụng bạn đã đề cập bằng cách sử dụng một thiết bị có ROM Gingerbread, tôi đã quản lý để chiếm 2 MB chênh lệch, giống như không gian bạn đã đề cập.


Xác định không gian bên trong và bên ngoài chiếm dụng

Theo dõi các bình luận, liên quan đến cách biết chính xác ứng dụng chiếm bao nhiêu trên thiết bị và có thể xem nó bằng bộ nhớ ngoài hoặc bộ nhớ trong, ứng dụng chính xác nhất mà tôi hiện đang sử dụng là SanDisk Memory Zone của SanDisk Corp. có sẵn miễn phí từ Google Play Store.

  1. Mở ứng dụng
  2. Chọn dung lượng mong muốn
  3. Kiểm tra các chi tiết về nó

    Chụp màn hình ScanDisk


Giải thích rất hay, như mọi khi Zuul làm điều đó :) Bạn có nói rằng người dùng cuối sẽ xác định rõ ràng bao nhiêu không gian được sử dụng bởi một ứng dụng và ở đâu - không liên quan đến "những thứ phức tạp" như sử dụng ứng dụng đầu cuối? Vì chúng tôi có nhiều câu hỏi ở đây liên quan đến "nơi lưu trữ của tôi đã đi đâu", đây sẽ là một trợ giúp tuyệt vời.
Izzy

Thêm vào nhận xét trước đây của tôi, vì tôi không nói rõ: Tôi có nghĩa là xác định dung lượng chiếm dụng của một ứng dụng trên bộ nhớ trong và bao nhiêu trên bộ nhớ ngoài - tức là để xem bao nhiêu ở đâu. Tất nhiên tốt nhất là nếu người ta có thể nhìn thấy tất cả những điều này ở một nơi - trái ngược với những gì tôi đã thể hiện trong câu trả lời của mình với các nhà thám hiểm lưu trữ đồ họa.
Izzy

Tôi tin rằng các ứng dụng tập tin dex của nó có xu hướng ở lại phía sau bộ nhớ điện thoại khi được chuyển sang SD bằng stock Apps2SD. Vì vậy, lý thuyết của tôi là, các tệp dex của ứng dụng ít hơn, hiệu quả hơn sẽ trở thành App2SD.
Irfan

Tôi đã tự hỏi mình liệu bộ nhớ cache Dalvik có được bao gồm trong "phân bổ ứng dụng" đã cho không. Tương tự đối với các tệp tạm thời, có thể được xác định thông qua chủ sở hữu của chúng (uid) - nhưng điều này sẽ yêu cầu quét toàn bộ hệ thống tệp, sẽ tốn một chút thời gian và nguồn tài nguyên nhưng về mặt lý thuyết có thể được thực hiện theo yêu cầu (thông qua một số nút quét lại).
Izzy

1
Cảm ơn bạn đã bổ sung, @Zuul! Khi bạn sử dụng ứng dụng đó: Ảnh chụp màn hình cho thấy không có phân chia trên "bộ nhớ điện thoại". Liệu nó có phân biệt giữa /data/data/dataphân vùng, thường gây nhầm lẫn (nếu đó là các phân vùng riêng biệt - điều này không đúng với tất cả các thiết bị / phiên bản Android)?
Izzy

3

Kiểm tra xung quanh, tôi chỉ tìm thấy một vài ứng dụng hữu ích tiết lộ nơi lưu trữ.

Đối với một, có DiskUsage . Mặc dù ảnh chụp màn hình 1 hiển thị sdcard ở đây, video trên trang playstore của ứng dụng cho thấy rõ nó cũng có thể được sử dụng trên bộ nhớ trong - và thậm chí liên kết đến trang ứng dụng bạn thường tìm thấy qua Menu -> Ứng dụng -> Quản lý ứng dụng . Bạn có thể đi bộ và phóng to / thu nhỏ từng khu vực, như các chú thích trên ảnh chụp màn hình.

Ứng cử viên thứ hai của tôi là Biểu đồ kích thước thư mục , đi kèm với một thiết kế khác và, như trong ảnh chụp màn hình 2 , cũng có thể đối phó với bộ nhớ trong.

DiskUsage Biểu đồ kích thước thư mục

Hai cái này chắc chắn có thể giúp xác định "lợn lưu trữ". Có nhiều cái khác được tìm thấy trong cửa hàng play theo khái niệm này, nhưng hầu hết chỉ giới hạn ở sdcard hoặc yêu cầu quyền truy cập root.


3

Vì N1 có liên quan chặt chẽ với HTC Incredible, bạn có thể gặp phải vấn đề về dung lượng lưu trữ thấp tương tự gây khó chịu cho người dùng Incredible (như bản thân tôi). Tôi đã hỏi một câu hỏi liên quan khi tôi bắt đầu gặp phải các ứng dụng đóng cửa do thiếu không gian phân vùng và sau đó củng cố sự hiểu biết của tôi về các phân vùng dữ liệu để trả lời câu hỏi về cảnh báo Sai lầm về không gian (lưu trữ nội bộ) trên HTC Incredible :

... Màn hình cài đặt ứng dụng của tôi hiển thị cho tôi những gì phải /datasử dụng (không bao giờ gần đầy, /datakích thước khớp với số được báo cáo bởi DiskUsage) mặc dù các ứng dụng của tôi thực sự bị hạn chế bởi nhỏ hơn nhiều /data/data(nơi tôi thường xuyên hết phòng) ...

Tôi thấy rằng số được báo cáo là "Bộ nhớ trong" đã báo cáo một cái gì đó hoàn toàn không có ích và, bởi tất cả các tài khoản, đều vô dụng trong việc giúp tôi thực sự quản lý bộ nhớ ứng dụng. Tôi đồng tình với Izzy trong khuyến nghị của anh ấy về DiskUsage , tôi thấy nó rất hữu ích đặc biệt là khi được root (với quyền root nó có thể hiển thị /data/dataviệc sử dụng phân vùng). Sử dụng trình giả lập thiết bị đầu cuối để điều tra việc sử dụng cũng hữu ích trong việc chẩn đoán vấn đề của tôi. Khi bạn xem xét /data/data/dataphân vùng của bạn , bạn có thấy sự khác biệt tương tự không?


2

Điều này có vẻ như bạn đang sử dụng Apps2SD hoặc tương đương, theo đó, di chuyển ứng dụng vào SDCard, chỉ một phần của ứng dụng được lưu trữ trong bộ nhớ trong và phần còn lại trên SDCard.

Để xác minh, hãy kiểm tra SDCard của bạn và xem liệu dữ liệu của ứng dụng có còn không, thông tin này sẽ được trình bày /sdcard/Android/data/theo sau là tên gói của ứng dụng đã cài đặt.

Đó là một cơ chế bình thường của Apps2SD.


Cảm ơn, tôi đang sử dụng Link2SD. Tôi đã không nhận ra rằng nó để lại một phần của ứng dụng. Điều này giúp giải thích nó.
RCourtna

1

Nhiều người có loại vấn đề đó và tôi có cùng một vấn đề. Việc chuyển các ứng dụng sang thẻ SD chỉ làm chậm một chút vấn đề vì một thứ khác sẽ lấp đầy bộ nhớ trong. Cuối cùng tôi đã tìm ra và nó hoạt động rất tốt.

Tôi có Galaxy Tab 7 nhưng nhiều thiết bị Android sẽ trải nghiệm điều đó. Cái được gọi /datathực sự không chỉ là dữ liệu mà là nơi Android cài đặt apk ứng dụng và một số dữ liệu liên quan đến nó. Nếu bạn buộc apk cài đặt trên thẻ SD, nó vẫn sẽ sử dụng một số dung lượng /data(số lượng nhỏ) cho một số dữ liệu.

Vấn đề tôi phát hiện ra là /data/tombstone, bạn sẽ tìm thấy 10 tệp có tên tombstone_0#. Đây là những thông tin gỡ lỗi liên tục / không ngừng được thu thập bởi Android. Những tập tin này được xây dựng theo thời gian. Bạn không cần điều đó cho một người dùng bình thường. Xóa tất cả chúng. Cả 4 tệp này đều sử dụng 1,4GB dung lượng lưu trữ máy tính bảng 1,89GB của tôi.

Để làm như vậy, bạn sẽ cần phải root thiết bị của bạn. Vâng, bạn phải. Và nó sẽ không nổ tung đừng lo lắng, tôi đã làm nó và nhiều người khác nữa! Sau đó lấy một chương trình như "Root Explorer" để duyệt và xóa rác. Nó sẽ yêu cầu và được cấp quyền root nếu bạn đã root thiết bị của mình trước đó và bạn sẽ có thể làm bất cứ điều gì bạn muốn.

Để root thiết bị của bạn, chỉ cần google "root android [mô hình thiết bị của tôi]" và bạn nên tìm nhanh cách root thiết bị của mình.

Vấn đề này là một lỗ hổng thiết kế. Khi có dung lượng lưu trữ nội bộ thấp, Android sẽ bắt đầu tác vụ nền để dọn sạch rác đó.


Xin vui lòng xem nhận xét của tôi về câu trả lời tương tự của bạn ở đây - Tôi chưa bao giờ thấy bia mộ chiếm hơn 10 MB, trường hợp của bạn là trường hợp đầu tiên. Và ngay cả khi, nó yêu cầu root để loại bỏ chúng. PS: Vì "bia mộ" là những gì được gọi là "bãi rác lõi" trên Unix / Linux, kích thước của chúng thay đổi theo bộ nhớ được sử dụng bởi các quy trình (bị lỗi) tương ứng của chúng. Obvioulsy của bạn đã là ứng dụng khá ngốn bộ nhớ :)
Izzy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.