ቁልፍ ልዩነት - ቆሻሻ ሰብሳቢ vs አጥፊ
አብዛኞቹ የፕሮግራሚንግ ቋንቋዎች የነገር ተኮር ፕሮግራሚንግ ይደግፋሉ። ነገሮችን በመጠቀም ፕሮግራም ወይም ሶፍትዌር የመገንባት ዘዴ ነው። አንድ ነገር የተፈጠረው ክፍልን በመጠቀም ነው፣ ስለዚህ የክፍል ምሳሌ ነው። አንድ ክፍል እቃው ምን ማካተት እንዳለበት መግለጫ ይሰጣል. ዕቃዎችን በሚፈጥሩበት ጊዜ ማህደረ ትውስታ ለዕቃዎቹ ይመደባል. ያንን ማህደረ ትውስታ ለሌላ ነገር እንደገና ለመጠቀም የተመደበው ማህደረ ትውስታ በፕሮግራሙ አፈፃፀም መጨረሻ ላይ መልቀቅ አለበት። እንደ Java እና C. NET ያሉ የፕሮግራሚንግ ቋንቋዎች ለማህደረ ትውስታ አስተዳደር ቆሻሻ ሰብሳቢዎችን ሲጠቀሙ እንደ C እና C++ ያሉ ቋንቋዎች ፕሮግራመርን የማህደረ ትውስታ አስተዳደርን እንዲቆጣጠር ይጠይቃሉ።አስፈላጊው የማህደረ ትውስታ መጠን መመደብ አለበት, እና በአፈፃፀም መጨረሻ ላይ, ማህደረ ትውስታው መልቀቅ አለበት. የቆሻሻ ሰብሳቢው እና አጥፊው ማህደረ ትውስታን ለመልቀቅ ያገለግላሉ። በቆሻሻ ሰብሳቢው እና አጥፊው መካከል ያለው ቁልፍ ልዩነት ቆሻሻ ሰብሳቢው አውቶማቲክ ሚሞሪ አስተዳደር የሚሰራ ሶፍትዌር ሲሆን አጥፊው ደግሞ እቃው በሚበላሽበት ጊዜ በቆሻሻ ሰብሳቢው የሚጠራ ልዩ ዘዴ ነው።
ቆሻሻ ሰብሳቢው ምንድነው?
አንዳንድ የፕሮግራሚንግ ቋንቋዎች የኮድ አካባቢዎችን አስተዳድረዋል። በፕሮግራሚንግ ቋንቋዎች ጃቫ እና ሲአውቶማቲክ ማህደረ ትውስታ አስተዳደር ይከናወናል. ፕሮግራመር በእቃዎቹ ጥቅም ላይ የዋለውን ማህደረ ትውስታ ነጻ ማድረግ አያስፈልገውም. የማህደረ ትውስታ አስተዳደር በራስ-ሰር ስለሚሰራ ውስብስብ ስርዓቶችን እንኳን ማዘጋጀት ለእነሱ ቀላል ይሆንላቸዋል. እንደ C፣ C++ እና Objective C ባሉ የፕሮግራሚንግ ቋንቋዎች ፕሮግራሙ የነገሮችን ማህደረ ትውስታ ወደ ስርዓቱ መመለስ አለበት። እንደ ጃቫ እና ሲያሉ ቋንቋዎች ከአሁን በኋላ ጥቅም ላይ የማይውሉትን ነገሮች ማወቅ ይችላሉ።ከዚያ በኋላ ለእነዚያ ነገሮች የተመደበውን ማህደረ ትውስታ ወደ ስርዓቱ መልሰው ይለቃሉ።
በፕሮግራሚንግ ቋንቋዎች C እና Java ተማሪ የሚባል ክፍል ካለ Student s=new Student () በመጠቀም አንድ ነገር መፍጠር ይቻላል; 'አዲሱ' የተማሪ ክፍል ምሳሌ ለመፍጠር ጥቅም ላይ ይውላል። በስርዓቱ ውስጥ ማህደረ ትውስታን ይመድባል. 's' የሚያመለክተው ለዚያ ነገር የተመደበውን የማህደረ ትውስታ እገዳ ነው። የቋንቋ አከባቢዎች እቃዎቹ ጥቅም ላይ እየዋሉ መሆናቸውን ወይም አለመሆኑን ይለያሉ። ተጨማሪ ጥቅም ላይ ካልዋሉ፣ ማህደረ ትውስታው ይለቀቃል እና በኋላ ጥቅም ላይ ሊውል ይችላል።
ምስል 01፡ ቆሻሻ ሰብሳቢ እና አጥፊ
ፕሮግራም ሲሰራ የማህደረ ትውስታ ጡጦዎች ከሲስተም ሜሞሪ ገንዳ ይመደባሉ። ከዚያ ፕሮግራሙ ያንን ማህደረ ትውስታ በመጠቀም ተግባራቶቹን ያከናውናል.የፕሮግራሙ አፈፃፀም ሲያልቅ ቆሻሻ ሰብሳቢው ለፕሮግራሙ የተመደቡት የማስታወሻ ጡጦዎች አስፈላጊ መሆናቸውን ወይም እንዳልሆነ ያጣራል። የማይፈለጉ ከሆነ, እነዚያ የማህደረ ትውስታ እገዳዎች ወደ ስርዓቱ ይመለሳሉ. ስለዚህ, ቆሻሻ ሰብሳቢው በፕሮግራሙ ውስጥ የተፈጠሩትን ነገሮች መከታተል ይችላል. ከአሁን በኋላ የማይፈለጉ የማህደረ ትውስታ እገዳዎች ወደ የስርዓት ማህደረ ትውስታ ገንዳ ይላካሉ። የዚህ ሂደት ዋነኛው ጠቀሜታ ፕሮግራመር በማስታወሻ ማከፋፈያው ላይ ማተኮር እንደሌለበት ማረጋገጥ ነው. አፈፃፀሙን እና የማህደረ ትውስታ አጠቃቀምን ሚዛናዊ ያደርገዋል።
አጥፊ ምንድነው?
አጥፊ የአንድ ክፍል ልዩ አባል ተግባር ነው። እቃው ከቦታው በወጣ ቁጥር ይጣራል። አንድ ተግባር ሲያልቅ ወይም በፕሮግራሙ አፈፃፀም መጨረሻ ላይ እቃው ሊጠፋ ይችላል. አጥፊው ከክፍል ስም ጋር ተመሳሳይ ስም አለው. ገንቢው ዕቃውን ለመፍጠር ጥቅም ላይ ይውላል. መለኪያዎችን መቀበል ይችላል. ገንቢው የመመለሻ ዋጋዎችም ሊኖረው ይችላል። ነገር ግን በአጥፊ ውስጥ, ምንም አይነት የመመለሻ አይነት ወይም መቀበያ መለኪያዎች የሉም.አንድ ክፍል አንድ አጥፊ ብቻ ሊይዝ ይችላል። የአጥፊ ምልክትን በመጠቀም አጥፊ ይጠቀሳል. የክፍሉ ስም ተማሪ ከሆነ፣ አጥፊው ~ ተማሪ () {}. ነው።
ቆሻሻ ሰብሳቢው የማይፈለጉትን ነገሮች ይፈልጋል። ከአሁን በኋላ በፕሮግራሙ ጥቅም ላይ የማይውሉ ነገሮች መጥፋት እንዳለባቸው ያረጋግጣል. ማህደረ ትውስታውን ለመልቀቅ እና ሀብቶቹን ለማስተናገድ አጥፊውን ይጠራል. አጥፊዎች ማህደረ ትውስታን ለመልቀቅ, ፋይሎችን ለመዝጋት, የአውታረ መረብ ሀብቶችን ለመልቀቅ እና የውሂብ ጎታ ግንኙነቶችን ለመዝጋት ጠቃሚ ናቸው. በአብዛኛዎቹ የፕሮግራም አወጣጥ ቋንቋዎች አጥፊውን መጻፍ አስፈላጊ አይደለም ምክንያቱም ቆሻሻ ሰብሳቢው ነባሪውን ገንቢ በራሱ ይጠራል. ፕሮግራመርተኛው እንደ C++ ባሉ ቋንቋዎች ጠቋሚዎችን በመጠቀም ምንም አይነት ተለዋዋጭ የማህደረ ትውስታ ድልድል ሰርቶ ከሆነ እቃው ከመጥፋቱ በፊት የማህደረ ትውስታን ለመልቀቅ አጥፊ መፃፍ አለበት።
የቆሻሻ አሰባሳቢ እና አጥፊው ተመሳሳይነት ምንድነው?
ሁለቱም የቆሻሻ ሰብሳቢ እና አጥፊዎች ማህደረ ትውስታን ለመልቀቅ ያገለግላሉ ይህም ለፕሮግራሙ የማይፈለግ ነው።
በቆሻሻ ሰብሳቢ እና አጥፊ መካከል ያለው ልዩነት ምንድን ነው?
ቆሻሻ ሰብሳቢ vs አጥፊ |
|
ቆሻሻ ሰብሳቢ አውቶማቲክ ሚሞሪ አስተዳደርን የሚያከናውን ሶፍትዌር ነው። | አጥፊው ዕቃው በሚጠፋበት ጊዜ በቆሻሻ ሰብሳቢው የሚጠራ ልዩ ዘዴ ነው። |
ይተይቡ | |
ቆሻሻ ሰብሳቢ ሶፍትዌር ነው። | አጥፊ ዘዴ ነው። |
ማጠቃለያ - ቆሻሻ ሰብሳቢ vs አጥፊ
ቆሻሻ ሰብሳቢ እና አጥፊ ሁለት ቃላት ከማስታወሻ መለቀቅ ጋር የተያያዙ ናቸው። ይህ ጽሑፍ በቆሻሻ ሰብሳቢ እና አጥፊ መካከል ያለውን ልዩነት ተመልክቷል። በቆሻሻ ሰብሳቢው እና አጥፊው መካከል ያለው ልዩነት ቆሻሻ ሰብሳቢው አውቶማቲክ ሚሞሪ አስተዳደርን የሚያከናውን ሶፍትዌር ሲሆን አጥፊው እቃው በሚበላሽበት ጊዜ በቆሻሻ ሰብሳቢው የሚጠራ ልዩ ዘዴ ነው።
የቆሻሻ ሰብሳቢ vs አጥፊ ፒዲኤፍ አውርድ
የዚህን ጽሁፍ ፒዲኤፍ ስሪት አውርደው በጥቅስ ማስታወሻ መሰረት ከመስመር ውጭ አላማዎች መጠቀም ይችላሉ። እባክዎ የፒዲኤፍ ቅጂውን እዚህ ያውርዱ፡ በቆሻሻ ሰብሳቢ እና አጥፊ መካከል ያለው ልዩነት