Dung lượng RAM lý tưởng mà điện thoại cần để đa nhiệm mượt mà là một chủ đề gây tranh cãi. Apple đạt được mục tiêu với kích thước nhỏ hơn trên iPhone của mình, kích thước này thường hữu dụng hơn các giải pháp Android. Bạn cũng sẽ không tìm thấy bất kỳ loại quản lý bộ nhớ RAM nào trên iPhone, trong khi Android có chức năng dành riêng cho việc này.
Ví dụ: nếu bạn sử dụng điện thoại Samsung Galaxy để Cài đặt -> Chăm sóc thiết bị, bạn sẽ tìm thấy chỉ báo RAM tại đây với thông tin về dung lượng còn trống và dung lượng đã bị chiếm dụng. Sau khi nhấp vào menu, bạn có thể xem mỗi ứng dụng đang chiếm bao nhiêu bộ nhớ và bạn cũng có tùy chọn xóa bộ nhớ tại đây. Chức năng RAM Plus cũng được đặt ở đây. Ý nghĩa của nó là nó sẽ lấy đi một số GB nhất định từ bộ nhớ trong để sử dụng cho bộ nhớ ảo. Bạn có thể tưởng tượng một cái gì đó như thế này trên iOS không?
Điện thoại thông minh dựa vào RAM. Nó phục vụ họ để lưu trữ hệ điều hành, khởi chạy các ứng dụng và cũng để lưu trữ một số dữ liệu của họ trong bộ nhớ đệm và bộ nhớ đệm. Vì vậy, RAM phải được sắp xếp và quản lý sao cho các ứng dụng có thể chạy trơn tru, ngay cả khi bạn thả chúng xuống nền và mở lại sau một thời gian.
Swift vs. Java
Nhưng khi khởi động một ứng dụng mới, bạn cần có dung lượng trống trong bộ nhớ để tải và chạy nó. Nếu đây không phải là trường hợp, nơi này phải được bỏ trống. Do đó, hệ thống sẽ buộc chấm dứt một số tiến trình đang chạy, chẳng hạn như các ứng dụng đã khởi động. Tuy nhiên, cả hai hệ thống, tức là Android và iOS, đều hoạt động khác nhau với RAM.
Hệ điều hành iOS được viết bằng Swift và iPhone thực sự không cần tái chế bộ nhớ đã sử dụng từ các ứng dụng đã đóng trở lại hệ thống. Điều này là do cách iOS được xây dựng, vì Apple có toàn quyền kiểm soát nó vì nó chỉ chạy trên iPhone của họ. Ngược lại, Android được viết bằng Java và được sử dụng trên nhiều thiết bị nên nó phải phổ biến hơn. Khi ứng dụng bị chấm dứt, dung lượng mà nó chiếm sẽ được trả lại cho hệ điều hành.
Mã gốc so với JVM
Khi nhà phát triển viết một ứng dụng iOS, họ sẽ biên dịch nó trực tiếp thành mã có thể chạy trên bộ xử lý của iPhone. Mã này được gọi là mã gốc vì nó không yêu cầu thông dịch hoặc môi trường ảo để chạy. Mặt khác, Android thì khác. Khi mã Java được biên dịch, nó sẽ được chuyển đổi thành mã trung gian Java Bytecode, độc lập với bộ xử lý. Do đó, nó có thể chạy trên các bộ xử lý khác nhau từ các nhà sản xuất khác nhau. Điều này có lợi thế rất lớn cho khả năng tương thích đa nền tảng.
Tất nhiên, cũng có một nhược điểm. Mỗi tổ hợp hệ điều hành và bộ xử lý cần có một môi trường được gọi là Máy ảo Java (JVM). Nhưng mã gốc hoạt động tốt hơn mã được thực thi thông qua JVM, do đó, việc sử dụng JVM chỉ làm tăng lượng RAM mà ứng dụng sử dụng. Vì vậy, các ứng dụng iOS sử dụng ít bộ nhớ hơn, trung bình là 40%. Đó cũng là lý do tại sao Apple không phải trang bị cho iPhone của mình nhiều RAM như các thiết bị Android.
Tôi không hẳn là một chuyên gia, nhưng tôi sẽ mô tả quan điểm của mình dưới góc nhìn của một người dùng đã sử dụng Android được 15 năm và hiện đã sử dụng iPhone 2 mini được 13 tháng. Trên android có bộ nhớ 8GB (gần đây nhất là Samsung S21, Flip3), tôi thường quay lại ứng dụng đã khởi chạy trước đó sau một thời gian nhất định và nó vẫn được tải trong RAM nên không khởi động lại được và tôi có thể tiếp tục công việc một cách suôn sẻ. rời khỏi. Mặt khác, ngay cả với bộ nhớ 8GB, tôi vẫn “bắn hạ” tất cả các ứng dụng mỗi tuần một lần để giải phóng RAM, vì hệ thống bắt đầu chậm lại khi đầy bộ nhớ. Tôi không gặp vấn đề gì với việc iPhone bị chậm, nhưng mặt khác, tôi phải nói rằng khi sử dụng các ứng dụng gần như giống hệt nhau, ngược lại, điều đó thường xuyên xảy ra với tôi khi tôi quay lại một ứng dụng đã ra mắt trước đó, nó tải lại hoàn toàn và tôi không thể tiếp tục một cách suôn sẻ nơi tôi đã dừng lại.
Lựa chọn nào tốt hơn? Thật khó để nói… Việc tắt ứng dụng trên Android và xóa RAM chỉ là vấn đề của hai cú nhấp chuột. Việc tải lại toàn bộ ứng dụng trên iPhone không quá tốn thời gian nên cũng không thành vấn đề lắm... Tất nhiên, sẽ lý tưởng hơn nếu có thêm RAM trên iPhone và đa nhiệm như trên Android :-D
Chết tiệt, lại ngu ngốc nữa rồi. Có một điều, Android đã lâu không được phát triển bằng Java, đó chính là mục đích của Kotlin. Trình thu gom rác chịu trách nhiệm về bộ nhớ, bộ nhớ đơn giản nhất trong iOS, tồn tại ngay cả với những nhược điểm của nó. Vấn đề là iOS sẽ tắt ứng dụng ngay khi bạn gỡ chúng ra khỏi màn hình. Điều này giải phóng bộ nhớ giống như trên linux khi bạn gõ kill pid của một tiến trình. Đó là lý do tại sao phải mất nhiều thời gian để mở trình duyệt và quay lại công việc trước đó. Bài viết này là bản dịch nguyên văn của một bài viết cách đây X của một người đam mê iOS không có kiến thức lập trình. Có, tất nhiên, việc quản lý bộ nhớ chủ yếu là trách nhiệm của người lập trình, ứng dụng làm gì. Nếu anh ta ho vào đó, có một sự rò rỉ bộ nhớ trên thế giới và pqk bạn có thể có X Gb bộ nhớ và nó vẫn vô dụng. Và tại thời điểm mà nhiều ứng dụng chỉ có WebView, điều này rất đơn giản, vì bản thân nó ăn những gì có thể. Bài viết vớ vẩn, rác rưởi.
Android không còn sử dụng jvm nữa mà sử dụng dvm. Và ngoài ra, sau đó nó biên dịch nó thành một tệp thực thi gốc
Java vẫn còn trong Android.