จำนวน RAM ในอุดมคติที่โทรศัพท์ต้องการสำหรับการทำงานหลายอย่างพร้อมกันอย่างราบรื่นนั้นเป็นหัวข้อที่ถกเถียงกันอยู่ Apple ประสบความสำเร็จด้วยขนาดที่เล็กกว่าใน iPhone ซึ่งมักจะใช้งานได้มากกว่าโซลูชัน Android คุณจะไม่พบการจัดการหน่วยความจำ RAM บน iPhone ในขณะที่ Android มีฟังก์ชั่นเฉพาะของตัวเองสำหรับสิ่งนี้
ตัวอย่างเช่นหากคุณไปที่โทรศัพท์ Samsung Galaxy นัสตาเวนิซ -> การดูแลอุปกรณ์คุณจะพบตัวบ่งชี้ RAM ที่นี่พร้อมข้อมูลเกี่ยวกับพื้นที่ว่างและจำนวนที่ถูกครอบครอง หลังจากคลิกที่เมนู คุณจะสามารถดูได้ว่าแต่ละแอปพลิเคชันใช้หน่วยความจำไปเท่าใด และคุณยังมีตัวเลือกในการล้างหน่วยความจำได้ที่นี่อีกด้วย ฟังก์ชั่น RAM Plus ก็อยู่ที่นี่เช่นกัน ความหมายของมันคือมันจะกัด GB จำนวนหนึ่งจากที่จัดเก็บข้อมูลภายในซึ่งจะใช้สำหรับหน่วยความจำเสมือน คุณจินตนาการถึงสิ่งนี้บน iOS ได้ไหม?
สมาร์ทโฟนอาศัย RAM ทำหน้าที่จัดเก็บระบบปฏิบัติการ เปิดแอปพลิเคชัน และจัดเก็บข้อมูลบางส่วนไว้ในแคชและหน่วยความจำบัฟเฟอร์ ดังนั้น RAM จะต้องได้รับการจัดระเบียบและจัดการในลักษณะที่แอปพลิเคชันสามารถทำงานได้อย่างราบรื่น แม้ว่าคุณจะวางแอปพลิเคชันเหล่านั้นไว้ที่พื้นหลังและเปิดอีกครั้งในภายหลังก็ตาม
สวิฟท์ vs. ชวา
แต่เมื่อเริ่มต้นแอปพลิเคชันใหม่ คุณจะต้องมีพื้นที่ว่างในหน่วยความจำเพื่อโหลดและเรียกใช้งาน หากไม่เป็นเช่นนั้นก็ต้องย้ายสถานที่นั้นออกไป ระบบจึงจะบังคับปิดกระบวนการที่ทำงานอยู่บางอย่าง เช่น แอปพลิเคชันที่ได้เริ่มต้นไปแล้ว อย่างไรก็ตาม ทั้งสองระบบ เช่น Android และ iOS ทำงานต่างกันกับ RAM
ระบบปฏิบัติการ iOS เขียนด้วย Swift และ iPhone ไม่จำเป็นต้องรีไซเคิลหน่วยความจำที่ใช้แล้วจากแอปที่ปิดกลับเข้าสู่ระบบ นี่เป็นเพราะวิธีการสร้าง iOS เนื่องจาก Apple สามารถควบคุมมันได้อย่างสมบูรณ์เนื่องจากมันทำงานบน iPhone เท่านั้น ในทางตรงกันข้าม Android เขียนด้วยภาษา Java และใช้กับอุปกรณ์หลายชนิด ดังนั้นจึงต้องเป็นสากลมากกว่า เมื่อแอปพลิเคชันสิ้นสุดลง พื้นที่ที่ใช้ไปจะถูกส่งกลับไปยังระบบปฏิบัติการ
รหัสเนทิฟเทียบกับ เจวีเอ็ม
เมื่อนักพัฒนาเขียนแอพ iOS พวกเขาจะคอมไพล์โดยตรงเป็นโค้ดที่สามารถทำงานบนโปรเซสเซอร์ของ iPhone รหัสนี้เรียกว่ารหัสเนทิฟเนื่องจากไม่จำเป็นต้องมีการตีความหรือสภาพแวดล้อมเสมือนในการทำงาน ในทางกลับกัน Android นั้นแตกต่างออกไป เมื่อคอมไพล์โค้ด Java จะถูกแปลงเป็นโค้ดระดับกลาง Java Bytecode ซึ่งไม่ขึ้นอยู่กับโปรเซสเซอร์ จึงสามารถทำงานบนโปรเซสเซอร์ที่แตกต่างกันจากผู้ผลิตหลายราย นี่เป็นข้อดีอย่างมากสำหรับความเข้ากันได้ข้ามแพลตฟอร์ม
แน่นอนว่ายังมีข้อเสียอยู่ด้วย ระบบปฏิบัติการและโปรเซสเซอร์แต่ละรายการต้องใช้สภาพแวดล้อมที่เรียกว่า Java Virtual Machine (JVM) แต่โค้ดแบบเนทีฟทำงานได้ดีกว่าโค้ดที่เรียกใช้ผ่าน JVM ดังนั้นการใช้ JVM จะเพิ่มจำนวน RAM ที่แอปพลิเคชันใช้ แอพ iOS จึงใช้หน่วยความจำน้อยลง โดยเฉลี่ย 40% นั่นเป็นสาเหตุที่ Apple ไม่จำเป็นต้องติดตั้ง RAM ให้กับ iPhone มากเท่ากับที่ทำกับอุปกรณ์ Android
ฉันไม่ใช่ผู้เชี่ยวชาญสักหน่อย แต่ฉันจะอธิบายมุมมองของฉันจากมุมมองของผู้ใช้ที่ใช้ Android มาเป็นเวลา 15 ปี และตอนนี้ได้ใช้ iPhone 2 mini เป็นเวลา 13 เดือนแล้ว บน Android ที่มีหน่วยความจำ 8GB (ล่าสุด Samsung S21, Flip3) ฉันมักจะกลับมาหลังจากผ่านไประยะหนึ่งไปยังแอปพลิเคชันที่เปิดตัวก่อนหน้านี้และยังคงโหลดอยู่ใน RAM ดังนั้นจึงไม่ได้เริ่มต้นใหม่ทั้งหมดอีกครั้งและฉันสามารถเลือกจุดที่ฉันได้อย่างราบรื่น ทิ้งไว้ ในทางกลับกัน แม้จะมีหน่วยความจำ 8GB ฉัน "ปิด" แอปพลิเคชันทั้งหมดสัปดาห์ละครั้งเพื่อล้าง RAM เนื่องจากระบบเริ่มทำงานช้าลงด้วยหน่วยความจำเต็ม ฉันไม่มีปัญหาในการทำให้ iPhone ทำงานช้าลง แต่ในทางกลับกัน ฉันต้องบอกว่าเมื่อใช้แอปพลิเคชันที่เกือบจะเหมือนกัน ในทางกลับกัน มันเกิดขึ้นกับฉันเป็นประจำว่าเมื่อฉันกลับไปที่แอปพลิเคชันที่เปิดตัวก่อนหน้านี้ มันโหลดอีกครั้งอย่างสมบูรณ์ และฉันไม่สามารถทำงานต่อจากจุดที่ฉันค้างไว้ได้อย่างราบรื่น
ตัวเลือกไหนดีกว่ากัน? ยากที่จะพูด… การฆ่าแอปบน Android และการล้าง RAM ทำได้ด้วยการคลิกสองครั้ง การโหลดแอปพลิเคชันทั้งหมดอีกครั้งบน iPhone นั้นใช้เวลาไม่นานนัก ดังนั้นจึงไม่สำคัญมากนัก... แน่นอนว่าการมี RAM บน iPhone มากขึ้นและการทำงานหลายอย่างพร้อมกันเหมือนกับบน Android จะเป็นการดี :-D
ไอ้นี่มันโง่อีกแล้ว ประการหนึ่งที่ Kotlin ไม่ได้ทำ Android ใน Java มาเป็นเวลานานแล้ว นั่นคือสิ่งที่ Kotlin มีไว้เพื่อ ตัวรวบรวมขยะมีหน้าที่ดูแลหน่วยความจำซึ่งเป็นวิธีที่ง่ายที่สุดใน iOS ซึ่งมีอยู่แม้ว่าจะมีข้อเสียก็ตาม สิ่งทั้งหมดก็คือ iOS จะฆ่าแอปทันทีที่คุณนำออกจากหน้าจอ สิ่งนี้จะทำให้หน่วยความจำว่างเหมือนกับบน linux เมื่อคุณพิมพ์ kill pid ของกระบวนการ นั่นเป็นเหตุผลว่าทำไมการเปิดเบราว์เซอร์และกลับสู่งานก่อนหน้าจึงใช้เวลานานมาก บทความนี้เป็นการแปลแบบคำต่อคำของบทความอายุ X ปีโดยผู้คลั่งไคล้ iOS ที่ไม่มีความรู้ด้านการเขียนโปรแกรม ใช่ แน่นอนว่าการจัดการหน่วยความจำนั้นเป็นความรับผิดชอบของโปรแกรมเมอร์เป็นหลักว่าแอปพลิเคชันทำอะไร ถ้าเขาไอใส่มัน แสดงว่ามีหน่วยความจำรั่วในโลก และ pqk คุณสามารถมีหน่วยความจำได้ X Gb และมันก็ยังคงไร้ประโยชน์ และในช่วงเวลาที่แอปพลิเคชันจำนวนมากเป็นเพียง WebView สิ่งนี้ง่ายมาก เพราะมันกินเท่าที่ทำได้ บทความนี้ไร้สาระขยะ
Android ไม่ได้ใช้ jvm อีกต่อไป แต่ใช้ dvm และยิ่งไปกว่านั้น มันยังคอมไพล์มันเป็นไฟล์ปฏิบัติการดั้งเดิมอีกด้วย
Java ยังอยู่ใน Android