Memory footprint
મેમરી ફૂટપ્રિન્ટ એ મુખ્ય મેમરીની માત્રાનો ઉલ્લેખ કરે છે જે પ્રોગ્રામ ચલાવતી વખતે ઉપયોગ કરે છે અથવા સંદર્ભ આપે છે. પદચિહ્ન શબ્દ સામાન્ય રીતે ભૌતિક પરિમાણોની હદનો ઉલ્લેખ કરે છે જે પદાર્થ ધરાવે છે, જે તેના કદનો અર્થ આપે છે. કમ્પ્યુટિંગમાં, સોફ્ટવેર એપ્લિકેશનની મેમરી પદચિહ્ન તેની રનટાઇમ મેમરી જરૂરિયાતો સૂચવે છે, જ્યારે પ્રોગ્રામ અમલમાં મૂકે છે. આમાં તમામ પ્રકારના સક્રિય મેમરી ક્ષેત્રોનો સમાવેશ થાય છે જેમ કે કોડ સેગમેન્ટ (મોટે ભાગે) પ્રોગ્રામ સૂચનાઓ (અને પ્રસંગોપાત અચળાંકો), ડેટા સેગમેન્ટ (પ્રારંભિક અને બિન-પ્રારંભિક બંને), હીપ મેમરી, કોલ સ્ટેક, વત્તા કોઈપણ વધારાના ડેટા સ્ટ્રક્ચર્સને રાખવા માટે જરૂરી મેમરી, જેમ કે સિમ્બોલ કોષ્ટકો, ડીબગિંગ ડેટા સ્ટ્રક્ચર્સ, ખુલ્લી ફાઇલો, વર્તમાન પ્રક્રિયામાં મેપ કરેલી વહેંચાયેલ લાઇબ્રેરીઓ, વગેરે, જે પ્રોગ્રામને અમલ કરતી વખતે ક્યારેય જરૂર પડે છે અને સમગ્ર રન દરમિયાન ઓછામાં ઓછી એક વાર લોડ કરવામાં આવશે. મોટા પ્રોગ્રામ્સમાં મોટી મેમરી ફૂટપ્રિન્ટ્સ હોય છે. એપ્લિકેશનની મેમરી ફૂટપ્રિન્ટ આશરે વહેંચાયેલ લાઈબ્રેરીઓ અથવા તે લોડ કરેલા વર્ગોની સંખ્યા અને કદના પ્રમાણમાં હોય છે, જ્યારે સ્થિર લાઈબ્રેરીઓ, એક્ઝેક્યુટેબલ પ્રોગ્રામ્સ અને સ્થિર ડેટા ક્ષેત્રો નિશ્ચિત (સ્થિર) ભાગમાં ફાળો આપે છે. પ્રોગ્રામ્સ પોતે ઘણીવાર તેમની પોતાની મેમરી ફૂટપ્રિન્ટ્સમાં સૌથી મોટો હિસ્સો આપતા નથી; તેના બદલે, રન-ટાઇમ વાતાવરણ દ્વારા રજૂ કરાયેલ માળખાઓ મોટાભાગની મેમરી લે છે. ઉદાહરણ તરીકે, સી + + કમ્પાઇલર વીટેબલ્સ દાખલ કરે છે, માહિતી ઓબ્જેક્ટ્સ અને ઘણા કામચલાઉ અને અનામી ઓબ્જેક્ટ્સ ટાઇપ કરે છે જે પ્રોગ્રામના અમલ દરમિયાન સક્રિય હોય છે. જાવા પ્રોગ્રામમાં, મેમરી પદચિહ્ન મુખ્યત્વે જાવા વર્ચ્યુઅલ મશીન (JVM) ના સ્વરૂપમાં રનટાઇમ વાતાવરણથી બનેલું હોય છે જે જાવા એપ્લિકેશન શરૂ થાય ત્યારે પરોક્ષ રીતે લોડ થાય છે. વધુમાં, મોટાભાગની ઓપરેટિંગ સિસ્ટમો પર, એપ્લિકેશન દ્વારા ખોલવામાં આવેલી ડિસ્ક ફાઇલો પણ એપ્લિકેશનના સરનામાંની જગ્યામાં વાંચવામાં આવે છે, જેનાથી તેના પદચિહ્નમાં ફાળો આપે છે. ઉપયોગનું વલણ 1990ના દાયકા દરમિયાન, કોમ્પ્યુટર મેમરી સસ્તી બની હતી અને મોટા મેમરી ફૂટપ્રિન્ટ્સ ધરાવતા પ્રોગ્રામ્સ સામાન્ય બની ગયા હતા. આ વલણ મોટે ભાગે કોમ્પ્યુટર સોફ્ટવેરના વ્યાપક ઉપયોગને કારણે છે, મોટા એન્ટરપ્રાઇઝ-વ્યાપી એપ્લિકેશનો કે જે વિશાળ માત્રામાં મેમરીનો ઉપયોગ કરે છે (જેમ કે ડેટાબેઝ) થી લઈને મેમરી સઘન મલ્ટીમીડિયા ઓથરિંગ અને એડિટિંગ સોફ્ટવેર સુધી. સતત વધતી જતી મેમરી જરૂરિયાતોને પહોંચી વળવા માટે, વર્ચ્યુઅલ મેમરી સિસ્ટમ્સ રજૂ કરવામાં આવી હતી જે ઉપલબ્ધ મેમરીને સમાન કદના ભાગોમાં વિભાજિત કરે છે અને જ્યારે પણ જરૂરી હોય ત્યારે હાર્ડ-ડિસ્ક પર સંગ્રહિત "પૃષ્ઠો" માંથી તેમને લોડ કરે છે. વિશાળ-સ્મૃતિ-પદચિહ્નોવાળા કાર્યક્રમોને ટેકો આપવાનો આ અભિગમ ખૂબ સફળ રહ્યો છે. માઈક્રોસોફ્ટ વિન્ડોઝ, એપલના મેકઓએસ અને લિનક્સ અને યુનિક્સની તમામ આવૃત્તિઓ સહિત મોટાભાગની આધુનિક ઓપરેટિંગ સિસ્ટમો વર્ચ્યુઅલ મેમરી સિસ્ટમો પ્રદાન કરે છે. એમ્બેડેડ સિસ્ટમોમાં પરંપરાગત રીતે, લો-મેમરી-ફૂટપ્રિન્ટ પ્રોગ્રામ્સ એમ્બેડેડ પ્લેટફોર્મ્સ પર એપ્લિકેશનો ચલાવવા માટે મહત્વના હતા જ્યાં મેમરી ઘણીવાર મર્યાદિત સંસાધન હોત-એટલું કે વિકાસકર્તાઓ સામાન્ય રીતે માત્ર પ્રોગ્રામ ફૂટપ્રિન્ટ્સને પૂરતી નાની બનાવવા માટે કાર્યક્ષમતા (પ્રક્રિયા ગતિ) નું ત્યાગ કરે છે. ઉદાહરણ તરીકે, સન માઇક્રોસિસ્ટમ્સે આવા મર્યાદિત ઉપકરણો માટે તેના જાવા વર્ચ્યુઅલ મશીન (જેવીએમ) નું સંસ્કરણ બહાર પાડ્યું; તે કેવીએમના નામથી જાય છે. કેવીએમ એવા પ્લેટફોર્મ્સ પર કામ કરે છે જ્યાં મેમરી કિલોબાઇટ્સમાં હોય છે, જે નિયમિત હોમ પીસી અથવા વધુ આધુનિક સ્માર્ટ ઉપકરણો પર ઉપલબ્ધ મેગાબાઇટ્સ (અથવા તો ગીગાબાઇટ્સ) મેમરીના વિરોધમાં હોય છે. એપ્લિકેશન ફૂટપ્રિન્ટ વર્ચ્યુઅલ મેમરી પણ જુઓ, જે મેમરી મેનેજમેન્ટ તકનીક છે જે કમ્પ્યુટર ડેટા સ્ટોરેજના વિવિધ સ્વરૂપોને વર્ચ્યુઅલાઈઝ કરે છે (જેમ કે રેન્ડમ-એક્સેસ મેમરી અને ડિસ્ક સ્ટોરેજ). સંદર્ભ સોફ્ટવેર ઓપ્ટિમાઇઝેશન