Làm thế nào để xảy ra lỗi OutOfMemory?

{{FormatNumbertoThousand(model.total_like)}} lượt thích
94 lượt xem
Android junior

Lỗi hết bộ nhớ (OutOfMemory) là một lỗi rất phổ biến khi bạn phát triển ứng dụng xử lý nhiều bộ hình ảnh hoặc hình ảnh bitmap lớn hoặc một số thứ liên quan đến Animation. Trong Android, mỗi ứng dụng chạy trong một Linux Process. Mỗi Linux Process có Virtual Machine (Dalvik Virtual Machine) chạy bên trong nó. Có một giới hạn về bộ nhớ mà một process có thể yêu cầu, và nó khác nhau cho các thiết bị khác nhau và cũng khác nhau cho điện thoại và máy tính bảng. Khi một process nào đó yêu cầu một lượng bộ nhớ lớn hơn giới hạn của nó, điều này gây ra lỗi, tức là lỗi hết bộ nhớ (OutOfMemory).

Có nhiều nguyên nhân khiến chúng ta gặp phải lỗi OutOfMemory. Một số trong số đó là:

  1. Bạn đang thực hiện một số thao tác liên tục đòi hỏi nhiều bộ nhớ và tại một điểm nào đó, nó vượt quá giới hạn bộ nhớ đệm tối đa của một process.
  2. Bạn đang rò rỉ một số bộ nhớ, tức là bạn không đánh dấu các đối tượng trước đó mà bạn đã cấp phát để chúng trở thành đối tượng thu gom rác (Garbage Collection - GC). Điều này được gọi là lỗ rò rỉ bộ nhớ (Memory leak).
  3. Bạn đang làm việc với các bitmap lớn và tải tất cả chúng vào runtime. Bạn phải đối phó rất cẩn thận với các bitmap lớn bằng cách tải kích thước bạn cần, không phải toàn bộ bitmap cùng một lúc, sau đó thực hiện tỷ lệ hóa (scaling).
{{login.error}}