கோப்புகளைச் செயலாக்கும்போது பிரவுசர் நினைவக வரம்புகள்
என் கோப்பு வெறும் 15 MB தான். டேபில் நினைவகம் ஏன் தீர்ந்துபோனது?
வட்டில் இருக்கும் கோப்பு சுருக்கப்பட்ட பதிப்பு
முழுத் தவறான புரிதலும் ஒரே வாக்கியத்தில்: கோப்பு மேலாளரில் நீங்கள் காணும் எண் சுருக்கப்பட்ட தரவின் அளவு; சுருக்கப்பட்ட நிலையில் இருக்கும்போது எதையும் செயலாக்க முடியாது. ஒரு படத்தை மறுஅளவாக்க, மீண்டும் சுருக்க, மாற்ற அல்லது ஆய்வு செய்ய, அது முதலில் மூலப் பிக்சல்களாக டிகோட் செய்யப்பட வேண்டும்; மூலப் பிக்சல்களோ மிகப் பெரியவை.
கணக்கு எளிது. நினைவகத்தில் ஒரு பிக்சல் பொதுவாக நான்கு பைட்டுகள் — சிவப்பு, பச்சை, நீலம், ஆல்ஃபா. 4000 × 3000 புகைப்படத்தில் பன்னிரண்டு மில்லியன் பிக்சல்கள்; எனவே டிகோட் செய்யப்பட்ட பிட்மேப் சுமார் 48 MB. அது வந்த JPEG ஒருவேளை 4 MB ஆக இருந்திருக்கலாம். எந்த வேலையும் தொடங்கும் முன்பே கோப்பு பன்னிரண்டு மடங்கு வளர்ந்துவிட்டது.
| பரிமாணங்கள் | பிக்சல்கள் | டிகோட் செய்யப்பட்ட பிட்மேப் |
|---|---|---|
| 1920 × 1080 | 2.1 மில்லியன் | சுமார் 8 MB |
| 4000 × 3000 | 12 மில்லியன் | சுமார் 48 MB |
| 6000 × 4000 | 24 மில்லியன் | சுமார் 96 MB |
| 10000 × 10000 | 100 மில்லியன் | சுமார் 400 MB |
ஒரு நகல் மட்டும் ஒருபோதும் போதாது
நடைமுறையான ஒரு செயல்வரிசை ஒரே நேரத்தில் பல நகல்களை வைத்திருக்கிறது: சுருக்கப்பட்ட உள்ளீட்டுப் பைட்டுகள், டிகோட் செய்யப்பட்ட மூலப் பிட்மேப், புதிய பரிமாணங்களில் ஒரு வெளியீட்டுப் பிட்மேப், என்கோடரின் உள்ளக பஃபர்கள், மற்றும் சுருக்கப்பட்ட முடிவு. உங்களுக்கு முன்னோட்டமும் காட்டும் கருவி இன்னொன்றையும் வைத்திருக்கும். மேலே சொன்ன 4000 × 3000 புகைப்படத்திற்கு, 4 MB போலத் தெரிந்த ஒரு கோப்புக்கு, இருநூறு முதல் முந்நூறு மெகாபைட் உச்ச நினைவகப் பயன்பாடு முற்றிலும் சாதாரணமானது.
PDF ரேஸ்டரைசேஷனும் பக்கம் பக்கமாக அதே வழியில் நடந்துகொள்கிறது: 300 DPI இல் ரெண்டர் செய்யப்பட்ட A4 பக்கம் தோராயமாக 2480 × 3508 பிக்சல்கள், டிகோட் செய்யப்பட்டால் சுமார் 35 MB; ஒரே நேரத்தில் பல பக்கங்களை ரெண்டர் செய்யும் கருவி அதைப் பன்மடங்காக்குகிறது. வீடியோ இன்னும் மோசம், ஏனெனில் ஒரு டிகோடருக்கு ஒரே நேரத்தில் பல குறிப்பு ஃபிரேம்கள் நினைவகத்தில் இருக்க வேண்டும்.
உண்மையான உச்ச வரம்புகள் எங்கே
- ஒரு டேபின் நினைவக வரம்பை தளம் அல்ல, பிரவுசரே நிர்ணயிக்கிறது; அது இயந்திரத்தில் நிறுவப்பட்ட நினைவகத்தை விடச் சிறியது. மற்ற டேபுகள் வேலையில் இருக்கும்போது அது மேலும் சுருங்குகிறது.
- பொதுவான 32-பிட் நினைவக மாதிரிக்காகக் கட்டப்பட்ட WebAssembly தொகுதிகள் அதிகபட்சம் நான்கு ஜிபிபைட்டுகளையே அணுக முடியும்; ஒரு இன்ஸ்டன்ஸுக்கு பிரவுசர்கள் பெரும்பாலும் அதை விடக் கணிசமாகக் குறைவாகவே அனுமதிக்கின்றன.
- தனிப்பட்ட பஃபர்களுக்குத் தங்கள் சொந்த அதிகபட்ச நீளம் உண்டு; அது ஒரு பக்கம் பயன்படுத்தக்கூடிய மொத்த நினைவகத்தை விட மிகக் குறைவு.
- மொபைல் இயங்குதளங்கள் மிகப் பெரிதாக வளரும் ஒரு டேபை முடித்துவிடுகின்றன — எச்சரிக்கை இல்லாமல், பக்கம் பிடிக்கக்கூடிய பிழைச் செய்தியும் இல்லாமல்.
- கிராஃபிக்ஸ் நினைவகம் தனியான, சிறிய தொகுப்பு. இயங்குதளத்தின் அதிகபட்சப் பரிமாணத்தை விடப் பெரிய கேன்வாஸ் வெறுமனே தோல்வியடைகிறது, கணினி நினைவகம் எவ்வளவு காலியாக இருந்தாலும்.
இவற்றில் எதுவும் நீங்கள் தேடிப் பார்க்கக்கூடிய ஒரே எண்ணாக வெளியிடப்படுவதில்லை, ஏனெனில் அவை பிரவுசர், பதிப்பு, சாதனம், வேறு என்ன இயங்குகிறது என்பவற்றைச் சார்ந்தவை. நிஜமான சிரமம் அதுதான்: எவ்வளவு நினைவகத்தைப் பயன்படுத்தலாம் என்று ஒரு கருவியால் கேட்கவே முடியாது.
ஃபோன்கள் ஏன் கடுமையான சூழல்
ஃபோன்களில் இயற்பியல் நினைவகம் குறைவு, டெஸ்க்டாப்பில் இருப்பது போன்ற ஸ்வாப் இல்லை, பின்புலச் செயல்பாடுகளிடமிருந்து நினைவகத்தைத் திரும்பப் பெறுவதில் இயங்குதளம் மிகத் தீவிரமானது. நீங்கள் ஒரு செய்திக்குப் பதில் சொல்லும் கணமே ஒரு பிரவுசர் டேப் பின்புலச் செயல்பாடாகிவிடுகிறது. எனவே மொபைல் பிரவுசர்கள் இறுக்கமான வரம்புகளை வைத்திருக்கின்றன, ஒரு டேபை வேகமாகவே தூக்கி எறிகின்றன; அந்தத் தூக்கி எறிதல் உங்களுக்கு ஒரு பிழையாக அல்லாமல், பக்கம் மீளேற்றி உங்கள் வேலையை இழந்தது போலவே தெரிகிறது.
நடைமுறை விளைவு என்னவென்றால், லேப்டாப்பில் முடியும் ஒரு வேலை, அதே கோப்புடன் ஒரு ஃபோனில் சாத்தியமற்றதாக இருக்கலாம். அது கருவியின் குறைபாடு அல்ல. அது ஒரு வன்பொருள் எல்லை; பாதி வழியில் செயலிழப்பதை விட, தொடங்கும் முன்பே அதைச் சொல்வதுதான் நேர்மையான பதில்.
கவனமான கருவி எப்படி நடந்துகொள்கிறது
- எதையும் ஒதுக்கும் முன், டிகோட் செய்யப்படும் பரிமாணங்களிலிருந்து தேவைப்படும் நினைவகத்தை மதிப்பிடுகிறது; தெளிவாகவே அடங்காத ஒரு வேலையை மறுக்கிறது.
- வரம்புள்ள சாதனத்தில் ஒரு தொகுதியை இணையாக இயக்காமல், ஒரு நேரத்தில் ஒரு கோப்பாகச் செயலாக்குகிறது.
- பக்கத்திற்கும் அதன் வொர்க்கர்களுக்கும் இடையே பஃபர்களை நகலெடுக்காமல் மாற்றுகிறது; எனவே ஒரு பெரிய கோப்பு இரண்டு முறை இருப்பதில்லை.
- ஒவ்வொரு முடிவும் எழுதப்பட்டதும் உடனே அதை விடுவிக்கிறது; தரவை உயிரோடு வைத்திருக்கும் தற்காலிக URL களை ரத்து செய்கிறது.
- ஃபார்மட் அனுமதிக்கும் இடத்தில், ஒரு ஆவணம் முழுவதையும் நினைவகத்திற்குள் ஏற்றாமல் பக்கம் பக்கமாகவோ ஃபிரேம் ஃபிரேமாகவோ ஸ்ட்ரீம் செய்கிறது.
- அது ஏற்கும் பிக்சல் எண்ணிக்கைக்கு ஒரு உச்ச வரம்பு வைக்கிறது; சிறிய கோப்பு ஒன்று மிகப் பெரிய கேன்வாஸாக விரிந்து டேபை வீழ்த்துவதையும் தடுப்பது இதுவே.
ஒரு வேலை தோல்வியடைந்தால் நீங்கள் என்ன செய்யலாம்
- மற்ற டேபுகளை மூடுங்கள். அவை அதே வரம்புக்காகப் போட்டியிடுகின்றன, பிரவுசர்கள் அதை நியாயமாகப் பங்கிடுவதில்லை.
- ஒரே நேரத்தில் குறைவான கோப்புகளைச் செயலாக்குங்கள். ஒரே கோப்பு கொண்ட வரிசை மெதுவானது, ஆனால் முடியும் வாய்ப்பு மிக அதிகம்.
- முதலில் பரிமாணங்களைக் குறையுங்கள். நீளமான பக்கத்தைப் பாதியாக்கினால் தேவைப்படும் நினைவகம் கால் பங்காகும்; பெரும்பாலும் நீங்கள் விரும்பியதும் அதுவேதான்.
- பெரிய PDF ஐப் பிரித்து, பகுதிகளாகச் செயலாக்குங்கள்.
- மிகப் பெரிய வேலைகளுக்கு டெஸ்க்டாப் இயந்திரத்திற்கு மாறுங்கள். இது லோக்கல் செயலாக்கத்தின் தோல்வி அல்ல; உங்களிடம் இருக்கும் வன்பொருளின் சரியான பயன்பாடு.
- ஒரு டேப் பல நாட்களாகத் திறந்திருந்தால் பிரவுசரை மறுதொடக்கம் செய்யுங்கள். நீண்ட நாள் திறந்திருக்கும் டேபுகள் நினைவகத்தைச் சேர்த்து வைக்கின்றன; மீளேற்றம் அதை விடுவிக்கிறது.
எந்த மதிப்பீட்டுக்கும் உள்ள வரம்பு
கிடைக்கும் நினைவகம் பற்றி பிரவுசர்கள் ஒரு தோராயமான குறிப்பை மட்டுமே வெளிப்படுத்துகின்றன, சில எதையும் வெளிப்படுத்துவதில்லை. எனவே ஒரு லோக்கல் கருவி உங்களுக்குக் காட்டும் எந்த எண்ணும், இயங்குதளத்திலிருந்து படித்த அளவீடு அல்ல; கோப்பின் சொந்தப் பரிமாணங்களிலிருந்தும் செயல்வரிசையின் ஒரு பாதுகாப்பான மாதிரியிலிருந்தும் கட்டப்பட்ட ஒரு மதிப்பீடு. ஒரு வேலையை முயற்சிக்கலாமா என்று முடிவு செய்ய அது பயனுள்ளது. அந்த வேலை முடியும் என்பதற்கு அது உத்தரவாதம் அல்ல, ஏனெனில் தீர்மானிக்கும் காரணி — அடுத்த முப்பது வினாடிகளில் சாதனத்தின் மற்ற பகுதிகள் என்ன செய்யப்போகின்றன — ஒரு வலைப்பக்கத்தால் காண முடியாதது.
இதற்கான கருவிகள்
ஆதாரங்கள்
- W3C — WebAssembly Core Specification, memory model
- W3C — Device Memory API, and why the value is coarse
- WHATWG — HTML Standard, transferable objects