원활한 멀티태스킹을 위해 휴대폰에 필요한 이상적인 RAM 용량은 꽤 논쟁의 여지가 있는 주제입니다. Apple은 iPhone의 크기가 작아서 Android 솔루션보다 더 유용할 때가 많습니다. 또한 iPhone에서는 RAM 메모리 관리 기능을 찾을 수 없지만 Android에는 이를 위한 전용 기능이 있습니다.
예를 들어 Samsung Galaxy 휴대폰으로 이동하면 나 스타 베니 -> 기기 관리, 여기에서 여유 공간과 점유 공간에 대한 정보가 포함된 RAM 표시기를 찾을 수 있습니다. 메뉴를 클릭하면 각 응용 프로그램이 사용하는 메모리 양을 확인할 수 있으며 여기에서 메모리를 지울 수도 있습니다. RAM Plus 기능도 여기에 있습니다. 그 의미는 가상 메모리로 사용할 내부 저장소에서 특정 GB 수를 물어뜯는다는 것입니다. iOS에서 이와 같은 것을 상상할 수 있습니까?
스마트폰은 RAM에 의존합니다. 운영 체제를 저장하고, 응용 프로그램을 시작하고, 일부 데이터를 캐시 및 버퍼 메모리에 저장하는 역할을 합니다. 따라서 RAM은 애플리케이션을 배경에 놓고 잠시 후 다시 열어도 애플리케이션이 원활하게 실행될 수 있도록 구성하고 관리해야 합니다.
스위프트 대. 자바
하지만 새 애플리케이션을 시작할 때 이를 로드하고 실행하려면 메모리에 여유 공간이 있어야 합니다. 그렇지 않은 경우 해당 장소를 비워야 합니다. 따라서 시스템은 이미 시작된 응용 프로그램과 같은 일부 실행 프로세스를 강제로 종료합니다. 그러나 두 시스템, 즉 Android와 iOS는 RAM과 다르게 작동합니다.
iOS 운영 체제는 Swift로 작성되었으며 iPhone은 실제로 닫힌 앱에서 사용한 메모리를 시스템으로 다시 재활용할 필요가 없습니다. 이는 iOS가 구축된 방식 때문입니다. iOS는 iPhone에서만 실행되기 때문에 Apple이 iOS를 완전히 제어할 수 있기 때문입니다. 이에 반해 안드로이드는 자바로 작성되어 많은 기기에서 사용되기 때문에 좀 더 보편적일 수밖에 없습니다. 응용 프로그램이 종료되면 차지한 공간은 운영 체제로 반환됩니다.
네이티브 코드와 JVM
개발자가 iOS 앱을 작성할 때 iPhone 프로세서에서 실행할 수 있는 코드로 직접 컴파일합니다. 이 코드는 실행하는 데 해석이나 가상 환경이 필요하지 않기 때문에 네이티브 코드라고 합니다. 반면 안드로이드는 다릅니다. Java 코드가 컴파일되면 프로세서 독립적인 Java 바이트코드 중간 코드로 변환됩니다. 따라서 다양한 제조업체의 다양한 프로세서에서 실행될 수 있습니다. 이는 크로스 플랫폼 호환성에 큰 이점이 있습니다.
물론 단점도 있습니다. 각 운영 체제와 프로세서 조합에는 JVM(Java Virtual Machine)이라는 환경이 필요합니다. 그러나 네이티브 코드는 JVM을 통해 실행되는 코드보다 더 나은 성능을 발휘하므로 JVM을 사용하면 애플리케이션에서 사용하는 RAM의 양이 늘어납니다. 따라서 iOS 앱은 평균 40% 정도 더 적은 메모리를 사용합니다. 이것이 바로 Apple이 iPhone에 Android 기기만큼 많은 RAM을 장착할 필요가 없는 이유이기도 합니다.
제가 정확히 전문가는 아니지만, 15년 동안 안드로이드를 사용해왔고 이제 아이폰 2 mini를 시작한 지 13개월이 된 사용자의 관점에서 제 관점을 설명하겠습니다. 8GB 메모리가 있는 안드로이드(가장 최근에는 Samsung S21, Flip3)에서는 일반적으로 특정 시간이 지나면 이전에 실행한 애플리케이션으로 돌아갔고 여전히 RAM에 로드되어 있었기 때문에 처음부터 다시 시작되지 않았고 원활하게 시작할 수 있었습니다. 중단되었습니다. 반면에 8GB의 메모리가 있어도 시스템이 전체 메모리로 인해 속도가 느려지기 시작했기 때문에 일주일에 한 번씩 모든 응용 프로그램을 "다운"하여 RAM을 정리했습니다. iPhone에서는 속도가 느려지는 데 문제가 없지만 거의 동일한 응용 프로그램을 사용할 때 반대로 이전에 실행한 응용 프로그램으로 돌아갈 때 정기적으로 발생하는 현상이 발생합니다. 완전히 다시 로드되고 중단한 부분을 원활하게 시작할 수 없습니다.
어떤 옵션이 더 낫습니까? 말하기 어렵습니다… Android에서 앱을 종료하고 RAM을 지우는 것은 두 번의 클릭만으로 가능합니다. 아이폰에서 전체 애플리케이션을 다시 로딩하는 것은 그다지 시간이 많이 걸리지 않으니 크게 상관은 없습니다만... 물론 아이폰에서는 램이 더 많고 안드로이드처럼 멀티태스킹이 가능하다면 이상적이겠죠 :-D
젠장, 또 바보 같네. 우선 Android는 오랫동안 Java로 구현되지 않았으며 Kotlin은 이를 위해 사용되었습니다. 가비지 컬렉터(Garbage Collector)는 iOS에서 가장 간단한 메모리를 담당하는 역할로 단점에도 불구하고 존재합니다. 요점은 iOS가 앱을 화면에서 떼자마자 앱을 종료한다는 것입니다. 프로세스의 kill pid를 입력하면 Linux에서와 마찬가지로 메모리가 해제됩니다. 그래서 브라우저를 열고 이전 작업으로 돌아가는 데 시간이 너무 오래 걸립니다. 이 기사는 프로그래밍 지식이 전혀 없는 iOS 광신자가 쓴 X년 된 기사를 그대로 번역한 것입니다. 예, 물론 메모리 관리는 주로 애플리케이션이 수행하는 작업인 프로그래머의 책임입니다. 그가 기침을 하면 세상에 메모리 누수가 발생하고 XGb의 메모리를 가질 수 있지만 여전히 쓸모가 없습니다. 그리고 많은 애플리케이션이 단지 WebView일 때 이는 자체적으로 가능한 만큼만 먹기 때문에 매우 간단합니다. 기사는 말도 안 돼요, 쓰레기입니다.
Android는 더 이상 jvm을 사용하지 않고 dvm을 사용합니다. 또한 이를 기본 실행 파일로 컴파일합니다.
Java는 여전히 Android에 있습니다.