பொருள்களின் தலைமுறைகளுடன் பணிபுரிதல்
ஜாவா குப்பை சேகரிப்பாளர்கள் ஒரு தலைமுறை குப்பை சேகரிப்பு உத்தியை செயல்படுத்துகின்றனர், இது பொருட்களை வயதின் அடிப்படையில் வகைப்படுத்தலாம்.
JVM இல் இத்தகைய தேவை (அனைத்து பொருட்களையும் குறிக்கவும் மற்றும் சுருக்கவும்) திறனற்றது என்று அழைக்கப்படலாம். அதிக எண்ணிக்கையிலான பொருள்கள் ஒதுக்கப்படுவதால், அவற்றின் பட்டியல் அதிகரிக்கிறது, இது குப்பை சேகரிப்பு நேரத்தை அதிகரிக்க வழிவகுக்கிறது. பயன்பாடுகளின் அனுபவப் பகுப்பாய்வு ஜாவாவில் உள்ள பெரும்பாலான பொருள்கள் குறுகிய காலமே இருப்பதைக் காட்டுகிறது.
ஜேவிஎம்மில் உள்ள ஹீப் மெமரி பகுதி மூன்று பிரிவுகளாக பிரிக்கப்பட்டுள்ளது:
இளைய தலைமுறை
புதிதாக உருவாக்கப்பட்ட பொருள்கள் இளைய தலைமுறையில் தொடங்குகின்றன. இளைய தலைமுறையினர் மேலும் இரண்டு வகைகளாகப் பிரிக்கப்பட்டுள்ளனர்.
- ஈடன் ஸ்பேஸ் - அனைத்து புதிய பொருள்களும் இங்கே தொடங்குகின்றன, அவை ஆரம்ப நினைவகத்தை ஒதுக்குகின்றன.
சர்வைவர் ஸ்பேஸ்கள் (FromSpace மற்றும் ToSpace) - ஒரு குப்பை சேகரிப்பு சுழற்சியில் இருந்து தப்பிய பிறகு பொருள்கள் ஈடனில் இருந்து இங்கு நகர்த்தப்படுகின்றன.
இளைய தலைமுறையினரிடமிருந்து பொருட்கள் சேகரிக்கப்படும் குப்பைகளாக இருக்கும் செயல்முறை சிறு குப்பை சேகரிப்பு நிகழ்வு என்று அழைக்கப்படுகிறது.
ஈடனின் இடம் பொருள்களால் நிரப்பப்பட்டால், ஒரு சிறிய குப்பை சேகரிப்பு செய்யப்படுகிறது. அனைத்து இறந்த பொருட்களும் அகற்றப்பட்டு, மீதமுள்ள இரண்டு இடங்களில் ஒன்றுக்கு அனைத்து உயிருள்ள பொருட்களும் நகர்த்தப்படுகின்றன. சிறிய ஜிசி உயிர்வாழும் இடத்தில் உள்ள பொருட்களையும் சரிபார்த்து அவற்றை மற்றொரு (அடுத்த) உயிர்வாழும் இடத்திற்கு நகர்த்துகிறது.
பின்வரும் வரிசையை உதாரணமாக எடுத்துக் கொள்வோம்.
- ஏதனில் இரண்டு வகையான (வாழும் மற்றும் இறந்த) பொருள்கள் உள்ளன.
- ஒரு சிறிய GC ஏற்படுகிறது - அனைத்து இறந்த பொருட்களும் ஈடனில் இருந்து அகற்றப்படுகின்றன. அனைத்து உயிருள்ள பொருட்களும் விண்வெளி-1 (FromSpace) க்கு நகர்த்தப்படுகின்றன. ஈடன் மற்றும் ஸ்பேஸ்-2 இப்போது காலியாக உள்ளன.
- புதிய பொருள்கள் உருவாக்கப்பட்டு ஏதனில் சேர்க்கப்படுகின்றன. ஈடன் மற்றும் ஸ்பேஸ்-1 இல் உள்ள சில பொருட்கள் இறந்துவிடுகின்றன.
- ஒரு சிறிய GC ஏற்படுகிறது - அனைத்து இறந்த பொருட்களும் ஈடன் மற்றும் ஸ்பேஸ்-1 இலிருந்து அகற்றப்படுகின்றன. அனைத்து உயிருள்ள பொருட்களும் விண்வெளி-2 (ToSpace) க்கு நகர்த்தப்படுகின்றன. ஈடன் மற்றும் விண்வெளி-1 காலியாக உள்ளன.
இதனால், எந்த நேரத்திலும், உயிர் பிழைத்த இடம் ஒன்று எப்போதும் காலியாகவே இருக்கும். உயிர் பிழைத்தவர்கள் உயிர் பிழைத்த இடங்கள் வழியாக செல்ல ஒரு குறிப்பிட்ட வரம்பை அடையும் போது, அவர்கள் பழைய தலைமுறைக்கு முன்னேறுவார்கள்.
இளம் தலைமுறையின் அளவை அமைக்க -Xmn கொடியைப் பயன்படுத்தலாம் .
பழைய தலைமுறை
கணிசமான நேரத்தை வாழும் பொருள்கள் (உதாரணமாக, ஒரு நிரலின் வாழ்நாளில் பெரும்பாலானவை) இறுதியில் பழைய பொருள்களாக மாறும் - நூற்றாண்டுகள். இது வழக்கமான தலைமுறை என்றும் அழைக்கப்படுகிறது மற்றும் நீண்ட காலமாக சர்வைவர் ஸ்பேஸில் விடப்பட்ட பொருட்களைக் கொண்டுள்ளது.
ஒரு பொருளின் வாழ்நாள் வரம்பு, அது பழைய தலைமுறைக்கு நகர்த்தப்படுவதற்கு முன்பு எத்தனை குப்பை சேகரிப்பு சுழற்சிகளைக் கடந்து செல்ல வேண்டும் என்பதை தீர்மானிக்கிறது. பழைய தலைமுறையிலிருந்து பொருட்களை குப்பைக்கு அனுப்பும் செயல்முறை முக்கிய குப்பை சேகரிப்பு நிகழ்வு என்று அழைக்கப்படுகிறது.
ஆரம்ப மற்றும் அதிகபட்ச ஹீப் நினைவக அளவை அமைக்க -Xms மற்றும் -Xmx கொடிகளைப் பயன்படுத்தலாம் .
ஜாவா தலைமுறை குப்பை சேகரிப்பைப் பயன்படுத்துவதால், அதிக குப்பை சேகரிப்பு நிகழ்வுகள் ஒரு பொருள் அனுபவிக்கும், மேலும் அது குவியலில் நகர்கிறது. அவர் இளைய தலைமுறையில் தொடங்கி, அவர் நீண்ட காலம் வாழ்ந்தால், வழக்கமான தலைமுறையில் முடிவடைகிறார்.
இடைவெளிகள் மற்றும் தலைமுறைகளுக்கு இடையே பொருள்களை மேம்படுத்துவதைப் புரிந்து கொள்ள, பின்வரும் உதாரணத்தைக் கவனியுங்கள்:
ஒரு பொருள் உருவாக்கப்பட்டால், அது முதலில் இளம் தலைமுறையின் ஈடன் இடத்தில் வைக்கப்படுகிறது.
ஒரு சிறிய குப்பை சேகரிப்பு ஏற்பட்டவுடன், ஈடனில் இருந்து வாழும் பொருட்கள் ஃப்ரம் ஸ்பேஸுக்கு நகர்த்தப்படுகின்றன. அடுத்த சிறிய குப்பை சேகரிப்பு நிகழும்போது, ஈடன் மற்றும் விண்வெளி இரண்டிலிருந்தும் வாழும் பொருட்கள் ToSpace க்கு நகர்த்தப்படுகின்றன.
இந்த சுழற்சி ஒரு குறிப்பிட்ட எண்ணிக்கையில் தொடர்கிறது. இதற்குப் பிறகும் பொருள் "சேவையில்" இருந்தால், அடுத்த குப்பை சேகரிப்பு சுழற்சி அதை பழைய தலைமுறை இடத்திற்கு நகர்த்தும்.
நிரந்தர தலைமுறை மற்றும் மெட்டாஸ்பேஸ்
வகுப்புகள் மற்றும் முறைகள் போன்ற மெட்டாடேட்டா நிலையான தலைமுறையில் சேமிக்கப்படுகிறது. பயன்பாடு பயன்படுத்தும் வகுப்புகளின் அடிப்படையில் JVM அதை இயக்க நேரத்தில் நிரப்புகிறது. இனி பயன்படுத்தப்படாத வகுப்புகள் நிரந்தர தலைமுறையிலிருந்து குப்பைக்கு செல்லலாம்.
நிரந்தர தலைமுறையின் ஆரம்ப மற்றும் அதிகபட்ச அளவை அமைக்க -XX:PermGen மற்றும் -XX:MaxPermGen கொடிகளைப் பயன்படுத்தலாம் .
மெட்டா இடம்
ஜாவா 8 முதல், PermGen இடம் MetaSpace நினைவக இடத்தால் மாற்றப்பட்டது. செயல்படுத்தல் PermGen இலிருந்து வேறுபடுகிறது - இந்த குவியல் இடம் இப்போது தானாகவே மாற்றப்படுகிறது.
இது PermGen இன் ஹீப் ஸ்பேஸின் வரையறுக்கப்பட்ட அளவு காரணமாக ஏற்படும் பயன்பாட்டின் நினைவகச் சிக்கலைத் தவிர்க்கிறது. மெட்டாஸ்பேஸ் நினைவகம் குப்பைகளை சேகரிக்கலாம், மேலும் மெட்டாஸ்பேஸ் அதன் அதிகபட்ச அளவை அடையும் போது இனி பயன்பாட்டில் இல்லாத வகுப்புகள் தானாகவே சுத்தம் செய்யப்படும்.
GO TO FULL VERSION