$lang['tuto'] = "பயிற்சிகள்"; ?> ஜாவா செயல்திறனை

ஜாவா செயல்திறனை மேம்படுத்துதல்: குப்பை இல்லாத பொருள் குளங்களை செயல்படுத்துதல்

Temp mail SuperHeros
ஜாவா செயல்திறனை மேம்படுத்துதல்: குப்பை இல்லாத பொருள் குளங்களை செயல்படுத்துதல்
ஜாவா செயல்திறனை மேம்படுத்துதல்: குப்பை இல்லாத பொருள் குளங்களை செயல்படுத்துதல்

திறமையான ஜாவா பயன்பாடுகளுக்கான மாஸ்டரிங் பொருள் பூலி

உயர் செயல்திறன் கொண்ட ஜாவா பயன்பாடுகளில், அதிகப்படியான குப்பை சேகரிப்பு (ஜி.சி) மறுமொழி மற்றும் செயல்திறனை கணிசமாகக் குறைக்கும். ஒரு பொதுவான குற்றவாளி என்பது குறுகிய கால பொருள்களை அடிக்கடி உருவாக்குவதும் அகற்றுவதும் ஆகும், இது ஜே.வி.எம் நினைவக நிர்வாகத்தில் பெரும் அழுத்தத்தை அளிக்கிறது. .

இந்த சிக்கலைச் சமாளிக்க, டெவலப்பர்கள் பெரும்பாலும் பொருள் பூலிங்கிற்கு திரும்புகிறார்கள் - இது ஒரு நுட்பத்தை தொடர்ந்து ஒதுக்குவதற்கும் சமாளிப்பதற்கும் பதிலாக பொருட்களை மீண்டும் பயன்படுத்துகிறது. நன்கு கட்டமைக்கப்பட்ட பொருள் குளத்தை செயல்படுத்துவதன் மூலம், பயன்பாடுகள் ஜி.சி செயல்பாட்டைக் குறைக்கலாம், நினைவக துண்டு துண்டாக குறைக்கலாம் மற்றும் இயக்க நேர செயல்திறனை மேம்படுத்தலாம்.

இருப்பினும், அனைத்து பொருள் பூலிங் உத்திகளும் சமமாக உருவாக்கப்படவில்லை. பயன்பாட்டு சுமையுடன் மாறும் அளவிடும், தேவையற்ற பொருளைத் தடுக்கும், மற்றும் குப்பைகளை உருவாக்குவதற்கு பங்களிப்பதைத் தவிர்த்து, ஒரு குளத்தை வடிவமைப்பதில் சவால் உள்ளது. உகந்த செயல்திறனை பராமரிப்பதற்கு சரியான அணுகுமுறையைத் தேர்ந்தெடுப்பது மிக முக்கியமானது.

கூடுதலாக, மாறாத பொருள்கள், போன்றவை சரம் நிகழ்வுகள், தனித்துவமான சவால்களை எளிதில் மீண்டும் பயன்படுத்த முடியாது என்பதால் அவற்றை முன்வைக்கின்றன. மாற்று உத்திகளைக் கண்டறிதல்-கேச்சிங் அல்லது இன்டர்வ் போன்றவை-நினைவக உகப்பாக்கத்திற்கான விளையாட்டு மாற்றியாக இருக்க முடியும். இந்த வழிகாட்டியில், குப்பை இல்லாத பொருள் குளங்களை செயல்படுத்தவும், உங்கள் ஜாவா பயன்பாட்டின் செயல்திறனை அதிகரிக்கவும் பயனுள்ள நுட்பங்களை ஆராய்வோம். .

கட்டளை பயன்பாட்டின் எடுத்துக்காட்டு
BlockingQueue<T> ஒத்திசைவு மேல்நிலை இல்லாமல் பல நூல்களை கடன் வாங்கவும் திருப்பித் தரவும் அனுமதிக்கும் ஒரு நூல்-பாதுகாப்பான வரிசை.
LinkedBlockingQueue<T> பொருள் குளத்தை செயல்படுத்த பயன்படுகிறது, அதிகப்படியான குப்பைகளை சேகரிப்பதைத் தடுக்கும் போது திறமையான பொருள் மறுபயன்பாட்டை உறுதி செய்கிறது.
ArrayBlockingQueue<T> பூல் செய்யப்பட்ட பொருட்களின் எண்ணிக்கையை கட்டுப்படுத்துவதன் மூலம் சிறந்த நினைவக கட்டுப்பாட்டை அனுமதிக்கும் ஒரு எல்லைக்குட்பட்ட தடுப்பு வரிசை.
AtomicInteger தற்போதைய பூல் அளவின் நூல்-பாதுகாப்பான கண்காணிப்புக்கு பயன்படுத்தப்படுகிறது, பொருள் எண்ணிக்கையை மாறும் போது பந்தய நிலைகளைத் தடுக்கிறது.
pool.poll() ஒரு பொருளைத் தடுக்காமல் ஒரு பொருளை மீட்டெடுக்கிறது மற்றும் நீக்குகிறது, எந்தவொரு பொருளும் கிடைக்கவில்லை என்றால் பூஜ்யத்தைத் திருப்புகிறது.
pool.offer(obj) ஒரு பொருளை குளத்திற்கு திருப்பித் தர முயற்சிக்கிறது; குளம் நிரம்பியிருந்தால், நினைவக கழிவுகளைத் தடுக்க பொருள் நிராகரிக்கப்படுகிறது.
factory.create() பூல் கிடைக்கக்கூடிய நிகழ்வுகளிலிருந்து வெளியேறும்போது புதிய பொருள்களை உருவாக்கும் தொழிற்சாலை முறை முறை.
size.incrementAndGet() ஒரு புதிய நிகழ்வு உருவாக்கப்படும்போது பொருள் எண்ணிக்கையை அணு அளவில் அதிகரிக்கிறது, இது துல்லியமான கண்காணிப்பை உறுதி செய்கிறது.
size.decrementAndGet() ஒரு பொருள் நிராகரிக்கப்படும்போது பொருள் எண்ணிக்கையை குறைக்கிறது, நினைவகத்தை அதிகமாக ஒதுக்குவதைத் தடுக்கிறது.

பொருள் குளங்களுடன் ஜாவா நினைவக நிர்வாகத்தை மேம்படுத்துதல்

ஜாவா பயன்பாடுகளில், அடிக்கடி பொருள் உருவாக்கம் மற்றும் அழிவு அதிகப்படியானதாக இருக்கும் குப்பை சேகரிப்பு, செயல்திறனை எதிர்மறையாக பாதிக்கிறது. பொருள் பூலிங் நுட்பம் மீண்டும் மீண்டும் நினைவகத்தை ஒதுக்குவதற்கு பதிலாக நிகழ்வுகளை மீண்டும் பயன்படுத்துவதன் மூலம் இதைத் தணிக்க உதவுகிறது. முதல் ஸ்கிரிப்ட் ஒரு அடிப்படை பொருள் குளத்தை செயல்படுத்துகிறது Bolcolgingqueue, பல திரிக்கப்பட்ட சூழலில் திறமையான பொருள் மறுபயன்பாட்டை உறுதி செய்தல். குளத்தில் பொருட்களை முன்னிலைப்படுத்துவதன் மூலம், இது தேவையற்ற நினைவகச் சிதறலைக் குறைக்கிறது மற்றும் குப்பை சேகரிப்பாளரை அடிக்கடி தூண்டுவதைத் தவிர்க்கிறது. .

இரண்டாவது ஸ்கிரிப்ட் ஒரு மாறும் அளவிடக்கூடிய பொருள் குளத்தை அறிமுகப்படுத்துவதன் மூலம் இந்த கருத்தை விரிவுபடுத்துகிறது. ஒரு நிலையான பூல் அளவை பராமரிப்பதற்கு பதிலாக, நினைவக செயல்திறனை உறுதி செய்யும் போது தேவையின் அடிப்படையில் இது சரிசெய்கிறது. பயன்பாடு அணுசக்தி பொருள் எண்ணிக்கையை துல்லியமாக கண்காணிக்க அனுமதிக்கிறது, இன நிலைமைகளைத் தடுக்கிறது. இந்த அணுகுமுறை அதிக சுமை காட்சிகளில் மிகவும் பயனுள்ளதாக இருக்கும், அங்கு பயன்பாட்டிற்கு ஏற்ற இறக்கங்கள் தேவைப்படும், அதிக ஒதுக்கீடு செய்யாமல் உகந்த செயல்திறனை உறுதி செய்கிறது.

போன்ற முக்கிய கட்டளைகள் வாக்கெடுப்பு () மற்றும் வழங்கல் () பயன்பாட்டைத் தடுக்காமல் பொருள் கிடைப்பதை நிர்வகிக்க முக்கியமானது. ஒரு பொருள் கடன் வாங்கும்போது, ​​அது குளத்திலிருந்து அகற்றப்பட்டு, திரும்பும்போது, ​​அது மீண்டும் அறிமுகப்படுத்தப்பட்டு, எதிர்கால பயன்பாட்டிற்கு கிடைக்கச் செய்கிறது. பூல் காலியாக இயங்கினால், ஒரு புதிய பொருள் தேவைக்கேற்ப உருவாக்கப்படுகிறது, அதே நேரத்தில் மொத்த அளவு வரம்பிற்குள் இருப்பதை உறுதிசெய்கிறது. இந்த மூலோபாயம் நினைவக துண்டு துண்டாக குறைகிறது மற்றும் மறுமொழி நேரங்களை மேம்படுத்துகிறது. .

சரங்கள் போன்ற மாறாத பொருள்களுக்கு, பூலிங் பயனற்றது, ஏனெனில் அவற்றின் நிலையை உருவாக்கத்திற்குப் பிறகு மாற்ற முடியாது. அதற்கு பதிலாக, போன்ற நுட்பங்கள் பயிற்சி அல்லது சிறப்பு தற்காலிக சேமிப்புகளைப் பயன்படுத்துவது கருத்தில் கொள்ளப்பட வேண்டும். திறமையான பூலிங் உத்திகள் மற்றும் டைனமிக் அளவிடுதல் ஆகியவற்றை மேம்படுத்துவதன் மூலம், ஜாவா பயன்பாடுகள் குப்பை சேகரிப்பு மேல்நிலையை கணிசமாகக் குறைக்கும், இது மென்மையான மற்றும் பதிலளிக்கக்கூடிய செயல்திறனுக்கு வழிவகுக்கும். இந்த அணுகுமுறைகள் பயன்பாடு திறமையாக இருப்பதை உறுதிசெய்கின்றன, அதிக ஒத்திசைவு மற்றும் மாறுபட்ட பணிச்சுமைகளின் கீழ் கூட.

பொருள் பூலிங் நுட்பங்களுடன் ஜாவா செயல்திறனை மேம்படுத்துதல்

குப்பை சேகரிப்பைக் குறைக்கவும் நினைவக பயன்பாட்டை மேம்படுத்தவும் ஜாவாவில் ஒரு திறமையான பொருள் குளத்தை செயல்படுத்துதல்.

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class ObjectPool<T> {
    private final BlockingQueue<T> pool;
    private final ObjectFactory<T> factory;
    public ObjectPool(int size, ObjectFactory<T> factory) {
        this.pool = new LinkedBlockingQueue<>(size);
        this.factory = factory;
        for (int i = 0; i < size; i++) {
            pool.offer(factory.create());
        }
    }
    public T borrowObject() throws InterruptedException {
        return pool.take();
    }
    public void returnObject(T obj) {
        pool.offer(obj);
    }
    public interface ObjectFactory<T> {
        T create();
    }
}

குப்பை உற்பத்தி இல்லாமல் டைனமிக் பொருள் பூல் அளவிடுதல்

ஒரு மேம்பட்ட ஜாவா பொருள் பூல் செயல்படுத்தல் குப்பை சேகரிப்பைத் தூண்டாமல் மாறும் வகையில் அளவிடப்படுகிறது.

import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.ArrayBlockingQueue;
public class ScalableObjectPool<T> {
    private final ArrayBlockingQueue<T> pool;
    private final ObjectFactory<T> factory;
    private final AtomicInteger size;
    private final int maxSize;
    public ScalableObjectPool(int initialSize, int maxSize, ObjectFactory<T> factory) {
        this.pool = new ArrayBlockingQueue<>(maxSize);
        this.factory = factory;
        this.size = new AtomicInteger(initialSize);
        this.maxSize = maxSize;
        for (int i = 0; i < initialSize; i++) {
            pool.offer(factory.create());
        }
    }
    public T borrowObject() {
        T obj = pool.poll();
        if (obj == null && size.get() < maxSize) {
            obj = factory.create();
            size.incrementAndGet();
        }
        return obj;
    }
    public void returnObject(T obj) {
        if (!pool.offer(obj)) {
            size.decrementAndGet();
        }
    }
    public interface ObjectFactory<T> {
        T create();
    }
}

ஜாவாவில் திறமையான பொருள் பூலி செய்வதற்கான மேம்பட்ட நுட்பங்கள்

அடிப்படை பொருள் பூலிங்கிற்கு அப்பால், மேம்பட்ட நுட்பங்கள் நினைவக மேலாண்மை மற்றும் செயல்திறனை மேலும் மேம்படுத்தலாம். அத்தகைய ஒரு அணுகுமுறை செயல்படுத்தப்படுகிறது நூல்-உள்ளூர் பொருள் குளங்கள். இந்த குளங்கள் ஒரு நூலுக்கு பொருட்களை ஒதுக்குகின்றன, சர்ச்சையை குறைத்து கேச் வட்டாரத்தை மேம்படுத்துகின்றன. பல நூல்கள் அடிக்கடி பொருள்களைக் கோரும் உயர்-ஒப்பீட்டு பயன்பாடுகளில் இது மிகவும் பயனுள்ளதாக இருக்கும். ஒவ்வொரு நூலும் அதன் சொந்த பொருள்களை மீண்டும் பயன்படுத்துவதை உறுதி செய்வதன் மூலம், பயன்பாடு ஒத்திசைவு மேல்நிலை மற்றும் தேவையற்ற குப்பை சேகரிப்பைக் குறைக்கிறது.

மற்றொரு முக்கியமான கருத்தாகும் சோம்பேறி துவக்கம் பொருள்களை உண்மையில் தேவைப்படும் வரை ஒதுக்குவதைத் தவிர்க்க. நிகழ்வுகளுடன் குளத்தை முன்பே ஏற்றுவதற்கு பதிலாக, பொருள்கள் தேவைக்கேற்ப உருவாக்கப்பட்டு எதிர்கால மறுபயன்பாட்டிற்காக சேமிக்கப்படுகின்றன. இந்த நுட்பம் பயன்பாட்டு பயன்பாடு கணிக்க முடியாத காட்சிகளில் அதிகமாக ஒதுக்கப்படுவதைத் தடுக்கிறது. இருப்பினும், தேவைப்படும்போது பொருள்கள் உடனடியாகக் கிடைப்பதை உறுதி செய்வதற்கு இது சமநிலையில் இருக்க வேண்டும், அடிக்கடி பொருள் உருவாக்கம் காரணமாக செயல்திறன் தடைகளைத் தவிர்ப்பது.

பெரிய பொருள்கள் அல்லது வள-கனமான நிகழ்வுகளைக் கையாளும் பயன்பாடுகளுக்கு, ஒருங்கிணைத்தல் பலவீனமான குறிப்புகள் அல்லது மென்மையான குறிப்புகள் நன்மை பயக்கும். இந்த குறிப்புகள் ஒரு தற்காலிக சேமிப்பு பொறிமுறையை வழங்கும்போது தேவைப்பட்டால் ஜே.வி.எம் நினைவகத்தை மீட்டெடுக்க அனுமதிக்கின்றன. நினைவக அழுத்தம் மாறும் வகையில் மாறுபடும் காட்சிகளில் இது மிகவும் பயனுள்ளதாக இருக்கும். இந்த உத்திகளின் கலவையை செயல்படுத்துவதன் மூலம், ஜாவா பயன்பாடுகள் மிகவும் திறமையான பொருள் நிர்வாகத்தை அடைய முடியும், குறைந்தபட்ச குப்பை சேகரிப்பு மேல்நிலை உறுதி மற்றும் இயக்க நேர செயல்திறனை அதிகரிக்கும். .

ஜாவாவில் பொருள் பூலிங் பற்றிய முக்கிய கேள்விகள்

  1. பொருள் பூலிங் ஜாவா பயன்பாட்டு செயல்திறனை எவ்வாறு மேம்படுத்துகிறது?
  2. பொருள் உருவாக்கம் மற்றும் அழிவைக் குறைப்பதன் மூலம், பொருள் பூலிங் குறைகிறது குப்பை சேகரிப்பு மேல்நிலை, சிறந்த நினைவக செயல்திறன் மற்றும் பயன்பாட்டு மறுமொழிக்கு வழிவகுக்கிறது.
  3. ஒரு நிலையான அளவு மற்றும் மாறும் அளவிடக்கூடிய பொருள் குளம் ஆகியவற்றுக்கு என்ன வித்தியாசம்?
  4. ஒரு நிலையான அளவிலான பூல் பொருள்களை மேம்படுத்துகிறது மற்றும் ஒரு குறிப்பிட்ட எண்ணை பராமரிக்கிறது, அதே நேரத்தில் அளவிடக்கூடிய குளம் தேவையின் அடிப்படையில் அதன் அளவை சரிசெய்கிறது, இது சிறந்த வள நிர்வாகத்தை உறுதி செய்கிறது.
  5. எப்படி முடியும் ThreadLocal பொருள் பூலிங்கிற்கு பயன்படுத்தப்பட வேண்டுமா?
  6. ThreadLocal குளங்கள் ஒரு நூல் நிகழ்வுகளை பராமரிக்கின்றன, சர்ச்சையை குறைத்தல் மற்றும் அதிக ஒற்றுமை பயன்பாடுகளில் செயல்திறனை மேம்படுத்துகின்றன.
  7. ஏன் போன்ற மாறாத பொருள்களை முடியாது String ஒரு குளத்தில் மீண்டும் பயன்படுத்தப்பட வேண்டுமா?
  8. முதல் String படைப்புகளுக்குப் பிறகு பொருள்களை மாற்ற முடியாது, அவற்றைப் பூலி செய்வது எந்த செயல்திறன் நன்மைகளையும் வழங்காது. அதற்கு பதிலாக, பயிற்சி அல்லது தேக்கக வழிமுறைகள் பயன்படுத்தப்பட வேண்டும்.
  9. பொருள் பூலிங்கின் குறைபாடுகள் என்ன?
  10. பொருள் பூலிங் நினைவகச் சிதறலைக் குறைக்கும் அதே வேளையில், முறையற்ற அளவிடுதல் அதிகப்படியான நினைவக நுகர்வு அல்லது பயன்பாட்டிற்கு வழிவகுக்கும், இது பயன்பாட்டு செயல்திறனை எதிர்மறையாக பாதிக்கும்.

பொருள் மறுபயன்பாட்டுடன் ஜாவா செயல்திறனை அதிகரித்தல்

குப்பை சேகரிப்பு அழுத்தத்தைக் குறைப்பதற்கும் ஜாவா பயன்பாடுகளில் வள பயன்பாட்டை மேம்படுத்துவதற்கும் பொருள் பூலிங் ஒரு சக்திவாய்ந்த நுட்பமாகும். திறமையான, மாறும் அளவிடக்கூடிய குளத்தை கவனமாக வடிவமைப்பதன் மூலம், டெவலப்பர்கள் பயன்பாட்டு மறுமொழி மற்றும் நினைவக செயல்திறனை மேம்படுத்த முடியும். சரியான அணுகுமுறை பொருள் ஒதுக்கீடு மற்றும் மறுபயன்பாடு தடையின்றி கையாளப்படுவதை உறுதி செய்கிறது, ஏற்ற இறக்கமான பணிச்சுமைகளின் கீழ் கூட.

பொருள் பூலிங் மாற்றக்கூடிய பொருள்களுக்கு பயனளிக்கும் போது, ​​மாறாத பொருட்களைக் கையாளுதல் சரம் பயிற்சி அல்லது தற்காலிக சேமிப்பு போன்ற மாற்று உத்திகள் தேவை. பூல் அளவை சமநிலைப்படுத்துதல், அதிகப்படியான முன்கூட்டியே இருப்பதைத் தவிர்ப்பது மற்றும் சிறந்த செயல்படுத்தல் மூலோபாயத்தைத் தேர்ந்தெடுப்பது உச்ச செயல்திறனை அடைவதற்கு முக்கிய காரணிகளாகும். சரியான அமைப்புடன், ஜாவா பயன்பாடுகள் குறைந்தபட்ச நினைவக கழிவுகளுடன் சீராக இயங்க முடியும். .

நம்பகமான ஆதாரங்கள் மற்றும் குறிப்புகள்
  1. ஜாவா பொருள் பூலிங் உத்திகள் குறித்த விரிவான வழிகாட்டி: பேல்டங்
  2. ஜாவா நினைவக மேலாண்மை மற்றும் குப்பை சேகரிப்பு குறித்த ஆரக்கிளின் அதிகாரப்பூர்வ ஆவணங்கள்: ஆரக்கிள் டாக்ஸ்
  3. ஜாவா பயன்பாடுகளில் ஜி.சி தாக்கத்தைக் குறைப்பதற்கான பயனுள்ள நுட்பங்கள்: ஜெட் பிரைன்ஸ் வலைப்பதிவு
  4. ஜாவாவில் பொருள் மறுபயன்பாடு மற்றும் செயல்திறனை மேம்படுத்துவதற்கான சிறந்த நடைமுறைகள்: InfoQ