Garbage collection और Just-In-Time (JIT) compilation

Java में कोड ऑप्टिमाइज़ करना

Pavlos Kosmetatos

Lead Engineer @Wealthyhood

Garbage collection - मूल बातें

मैनुअल मेमोरी मैनेजमेंट (C/C++)

  • प्रोग्रामर मेमोरी को खुद allocate और free करते हैं
  • लीक की आशंका रहती है

$$

Java की Garbage Collection

  • ऑटोमैटिक मेमोरी allocation
  • अनयूज्ड ऑब्जेक्ट्स की ऑटोमैटिक पहचान
  • ऑटोमैटिक मेमोरी रिक्लेमेशन
Java में कोड ऑप्टिमाइज़ करना

Garbage collection कैसे काम करती है

  • Mark: roots से reachable ऑब्जेक्ट्स को पहचानें
  • Sweep: unreachable ऑब्जेक्ट्स हटाएँ

Screenshot 2025-05-11 at 6.58.38 PM.png

Java में कोड ऑप्टिमाइज़ करना

Garbage collection और परफॉर्मेंस

GC परफॉर्मेंस ट्रेड-ऑफ्स

  • डेवलपमेंट आसान बनता है, पर परफॉर्मेंस पर असर पड़ सकता है

$$

GC एल्गोरिदम

  • मॉडर्न JVMs कई garbage collection एल्गोरिदम देती हैं
  • चुनाव एप्लिकेशन की ज़रूरतों पर निर्भर है
  • GC एल्गोरिदम पर डीप-डाइव गाइड यहाँ मिल सकता है
1 https://www.baeldung.com/jvm-garbage-collectors
Java में कोड ऑप्टिमाइज़ करना

GC परफॉर्मेंस इम्पैक्ट

// गलत - बहुत से शॉर्ट-लिव्ड ऑब्जेक्ट्स बनाना
for (int i = 0; i < 1000000; i++) {
    new Object(); // तुरंत garbage बन जाता है
}


// बनाम ऑब्जेक्ट्स को reuse करना Object obj; for (int i = 0; i < 1000000; i++) { obj = new Object(); // केवल एक reference }
Java में कोड ऑप्टिमाइज़ करना

GC-फ्रेंडली कोड

// परफॉर्मेंस-क्रिटिकल कोड में इससे बचें
String result = "";
for (int i = 0; i < 100000; i++) {
    result += i; // हर बार नया String बनता है
}


// बेहतर तरीका StringBuilder builder = new StringBuilder(); for (int i = 0; i < 100000; i++) { builder.append(i); // वही buffer reuse होता है } String result = builder.toString();
Java में कोड ऑप्टिमाइज़ करना

Just-In-Time compilation

  • JVM execution प्रोसेस:
    • Java source -> Bytecode
    • Bytecode -> Interpreted execution
    • Hot methods -> Native machine code
  • बार-बार चलने वाले कोड को optimize करता है
Java में कोड ऑप्टिमाइज़ करना

JIT-फ्रेंडली कोड पैटर्न्स

  • प्रेडिक्टेबल कोड लिखें
// Predictable branches से JIT optimization में मदद मिलती है
if (value > 0) {
    // Code A - अक्सर लिया जाने वाला path
} else {
    // Code B - बहुत कम लिया जाने वाला path
}
  • फोकस्ड, छोटे methods बनाएँ
  • छोटे, बार-बार कॉल होने वाले methods inlining के लिए ideal होते हैं
  • बहुत complex कोड कम प्रभावी तरह से optimize हो सकता है
Java में कोड ऑप्टिमाइज़ करना

सारांश

  • परफॉर्मेंस-क्रिटिकल paths में object creation कम करें
  • ऐसा प्रेडिक्टेबल कोड लिखें जो JIT optimization के अनुकूल हो
  • पहले प्रोफाइल करें, फिर उसी कोड को optimize करें जो सच में मायने रखता है
Java में कोड ऑप्टिमाइज़ करना

अभ्यास करते हैं!

Java में कोड ऑप्टिमाइज़ करना

Preparing Video For Download...