RAM-ի իդեալական քանակությունը, որն անհրաժեշտ է հեռախոսներին իրենց սահուն բազմաֆունկցիոնալ աշխատանքի համար, բավականին քննարկվող թեմա է: Apple-ը հաղթահարում է իր iPhone-ների ավելի փոքր չափսը, որը հաճախ ավելի օգտագործելի է, քան Android լուծումները: Դուք նաև չեք գտնի RAM-ի հիշողության որևէ կառավարում iPhone-ում, մինչդեռ Android-ն ունի դրա համար հատուկ գործառույթ:
Եթե դուք գնում եք, օրինակ, Samsung Galaxy հեռախոսներում դեպի Նաստավենի -> Սարքի խնամք, այստեղ դուք կգտնեք RAM-ի ցուցիչ՝ տեղեկություններով, թե որքան տարածք է ազատ և որքան է զբաղված: Մենյուի վրա սեղմելուց հետո դուք կարող եք տեսնել, թե յուրաքանչյուր հավելված ինչքան հիշողություն է վերցնում, ինչպես նաև այստեղ հնարավորություն ունեք մաքրել հիշողությունը: Այստեղ է գտնվում նաև RAM Plus ֆունկցիան։ Դրա իմաստն այն է, որ այն կկծի որոշակի քանակությամբ ԳԲ ներքին պահեստից, որը կօգտագործի վիրտուալ հիշողության համար։ Պատկերացնու՞մ եք նման բան iOS-ում:
Սմարթֆոնները հիմնվում են RAM-ի վրա: Այն ծառայում է նրանց օպերացիոն համակարգը պահելու, հավելվածներ գործարկելու և նաև դրանց որոշ տվյալների քեշում և բուֆերային հիշողության մեջ պահելու համար: Այսպիսով, RAM-ը պետք է կազմակերպվի և կառավարվի այնպես, որ հավելվածները կարողանան սահուն աշխատել, նույնիսկ եթե դրանք թողնեք ֆոն և որոշ ժամանակ անց նորից բացեք:
Սվիֆթ ընդդեմ. Java
Բայց նոր հավելված գործարկելիս պետք է հիշողության մեջ ազատ տարածք ունենալ այն բեռնելու և գործարկելու համար: Եթե դա այդպես չէ, ապա տեղը պետք է ազատվի: Հետևաբար, համակարգը հարկադրաբար կդադարեցնի որոշ գործող գործընթացներ, ինչպիսիք են արդեն մեկնարկած հավելվածները: Այնուամենայնիվ, երկու համակարգերը, այսինքն՝ Android-ը և iOS-ը, տարբեր կերպ են աշխատում RAM-ի հետ:
iOS օպերացիոն համակարգը գրված է Swift-ով, և iPhone-ները իրականում կարիք չունեն փակ հավելվածներից օգտագործված հիշողությունը վերամշակելու համակարգ: Սա պայմանավորված է iOS-ի կառուցման ձևով, քանի որ Apple-ը լիովին վերահսկում է այն, քանի որ այն աշխատում է միայն իր iPhone-ներով: Ի հակադրություն, Android-ը գրված է Java-ով և օգտագործվում է բազմաթիվ սարքերում, ուստի այն պետք է լինի ավելի ունիվերսալ: Երբ հավելվածն ավարտվում է, դրա զբաղեցրած տարածքը վերադարձվում է օպերացիոն համակարգ:
Մայրենի կոդը ընդդեմ. JVM
Երբ ծրագրավորողը գրում է iOS հավելված, նրանք այն ուղղակիորեն կազմում են կոդի, որը կարող է աշխատել iPhone-ի պրոցեսորով: Այս կոդը կոչվում է հայրենի կոդ, քանի որ այն գործարկելու համար չի պահանջում մեկնաբանություն կամ վիրտուալ միջավայր: Android-ը, մյուս կողմից, տարբեր է: Երբ Java կոդը կազմվում է, այն փոխարկվում է Java Bytecode միջանկյալ կոդի, որը պրոցեսորից անկախ է։ Հետևաբար, այն կարող է աշխատել տարբեր արտադրողների տարբեր պրոցեսորների վրա: Սա հսկայական առավելություններ ունի միջպլատֆորմային համատեղելիության համար:
Իհարկե, կա նաև բացասական կողմ. Յուրաքանչյուր օպերացիոն համակարգի և պրոցեսորի համակցության կարիք ունի միջավայր, որը հայտնի է որպես Java վիրտուալ մեքենա (JVM): Բայց հայրենի կոդը ավելի լավ է գործում, քան JVM-ի միջոցով կատարված կոդը, ուստի JVM-ի օգտագործումը պարզապես մեծացնում է հավելվածի կողմից օգտագործվող RAM-ի քանակը: Այսպիսով, iOS հավելվածներն ավելի քիչ հիշողություն են օգտագործում՝ միջինը 40%: Ահա թե ինչու Apple-ը ստիպված չէ իր iPhone-ները համալրել այնքան RAM-ով, որքան Android սարքերի դեպքում:
Ես կոնկրետ մասնագետ չեմ, բայց ես կներկայացնեմ իմ տեսակետը մի օգտատիրոջ տեսանկյունից, ով օգտագործել է Android-ը 15 տարի և այժմ արդեն 2 ամիս է անցել iPhone 13 mini-ում: 8 ԳԲ հիշողությամբ Android-ում (վերջինը՝ Samsung S21, Flip3) ես սովորաբար որոշակի ժամանակ անց վերադառնում էի նախկինում գործարկված հավելվածին, և այն դեռ բեռնված էր RAM-ում, այնպես որ այն նորից չսկսվեց, և ես կարող էի սահուն կերպով վերցնել, թե որտեղից էի։ բաց թողնել. Մյուս կողմից, նույնիսկ 8 ԳԲ հիշողությամբ, ես շաբաթը մեկ անգամ բոլոր հավելվածները «գցում էի»՝ RAM-ը մաքրելու համար, քանի որ համակարգը սկսեց դանդաղեցնել լրիվ հիշողությամբ։ IPhone-ով դանդաղեցնելու խնդիր չունեմ, բայց մյուս կողմից ասեմ, որ գրեթե նույնական հավելվածներից օգտվելիս, ընդհակառակը, ինձ հետ պարբերաբար պատահում է, որ երբ վերադառնում եմ նախկինում գործարկված հավելվածին. այն նորից ամբողջությամբ բեռնվում է, և ես չեմ կարող սահուն շարունակել այնտեղ, որտեղ դադարեցրել եմ:
Ո՞ր տարբերակն է ավելի լավ: Դժվար է ասել… Android-ում հավելվածները սպանելը և RAM-ը մաքրելը երկու կտտոցով է: Ամբողջ հավելվածը կրկին iPhone-ով բեռնելը այնքան էլ ժամանակատար չէ, ուստի այդքան էլ կարևոր չէ... Իհարկե, իդեալական կլիներ ավելի շատ RAM ունենալ iPhone-ում և բազմաֆունկցիոնալ, ինչպես Android-ում :-D
Շա՛տ, նորից հիմարություն է։ Առաջին հերթին, Android-ը վաղուց չի արվել Java-ում, դրա համար է Kotlin-ը: Աղբահանը ղեկավարում է հիշողությունը, որն ամենապարզն է iOS-ում, որն առկա է նույնիսկ իր թերություններով հանդերձ։ Ամբողջ բանն այն է, որ iOS-ը սպանում է հավելվածները էկրանից հեռացնելուն պես: Սա ազատում է հիշողությունը ճիշտ այնպես, ինչպես Linux-ում, երբ մուտքագրում եք kill pid պրոցեսը: Ահա թե ինչու է այդքան ժամանակ պահանջվում բրաուզերը բացելու և նախկին աշխատանքին վերադառնալու համար։ Այս հոդվածը X-ամյա հոդվածի բառացի թարգմանությունն է iOS-ի ֆանատիկոսի կողմից՝ առանց ծրագրավորման գիտելիքների: Այո, իհարկե, հիշողության կառավարումը հիմնականում ծրագրավորողի պարտականությունն է, թե ինչ է անում հավելվածը։ Եթե նա հազի դրա վրա, աշխարհում հիշողության արտահոսք կա և pqk կարող ես ունենալ X Գբ հիշողություն ու դեռ անօգուտ է: Եվ այն ժամանակ, երբ շատ հավելվածներ միայն WebView են, սա շատ պարզ է, քանի որ այն ինքն է ուտում այն, ինչ կարող է: Հոդվածը անհեթեթություն է, աղբ։
Android-ն այլևս օգտագործում է ոչ թե jvm, այլ dvm: Եվ ի լրումն, այն այնուհետև այն կազմում է բնիկ գործարկվողի մեջ
Java-ն դեռ Android-ում է: