ಕನ್ನಡ

ಜಾವಾ ವರ್ಚುವಲ್ ಮೆಷಿನ್ (JVM) ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಟ್ಯೂನಿಂಗ್‌ನ ಈ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿಯೊಂದಿಗೆ ನಿಮ್ಮ ಜಾವಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಸಂಪನ್ಮೂಲ ಬಳಕೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಿ.

ಜಾವಾ ವರ್ಚುವಲ್ ಮೆಷಿನ್: ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಟ್ಯೂನಿಂಗ್‌ನ ಆಳವಾದ ನೋಟ

ಜಾವಾದ ಶಕ್ತಿಯು ಅದರ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್ ಸ್ವಾತಂತ್ರ್ಯದಲ್ಲಿದೆ, ಇದನ್ನು ಜಾವಾ ವರ್ಚುವಲ್ ಮೆಷಿನ್ (JVM) ಮೂಲಕ ಸಾಧಿಸಲಾಗುತ್ತದೆ. JVMನ ಒಂದು ನಿರ್ಣಾಯಕ ಅಂಶವೆಂದರೆ ಅದರ ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆ, ಇದನ್ನು ಮುಖ್ಯವಾಗಿ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ (GC) ನಿಭಾಯಿಸುತ್ತದೆ. ಅಪ್ಲಿಕೇಶನ್‌ನ ಉತ್ತಮ ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ, ವಿಶೇಷವಾಗಿ ವೈವಿಧ್ಯಮಯ ಕೆಲಸದ ಹೊರೆಗಳು ಮತ್ತು ದೊಡ್ಡ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ನಿಭಾಯಿಸುವ ಜಾಗತಿಕ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗಾಗಿ GC ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮತ್ತು ಟ್ಯೂನ್ ಮಾಡುವುದು ಬಹಳ ಮುಖ್ಯ. ಈ ಮಾರ್ಗದರ್ಶಿಯು GC ಟ್ಯೂನಿಂಗ್‌ನ ಸಮಗ್ರ ಅವಲೋಕನವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದರಲ್ಲಿ ವಿವಿಧ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್‌ಗಳು, ಟ್ಯೂನಿಂಗ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಮತ್ತು ನಿಮ್ಮ ಜಾವಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ಸಹಾಯ ಮಾಡುವ ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳು ಸೇರಿವೆ.

ಜಾವಾದಲ್ಲಿ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು

ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಎಂದರೆ ಒಂದು ಪ್ರೋಗ್ರಾಂನಿಂದ ಇನ್ನು ಮುಂದೆ ಬಳಕೆಯಲ್ಲಿಲ್ಲದ ಆಬ್ಜೆಕ್ಟ್‌ಗಳು ಆಕ್ರಮಿಸಿಕೊಂಡಿರುವ ಮೆಮೊರಿಯನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಹಿಂಪಡೆಯುವ ಪ್ರಕ್ರಿಯೆ. ಇದು ಮೆಮೊರಿ ಲೀಕ್‌ಗಳನ್ನು ತಡೆಯುತ್ತದೆ ಮತ್ತು ಡೆವಲಪರ್‌ಗಳನ್ನು ಮ್ಯಾನುಯಲ್ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯಿಂದ ಮುಕ್ತಗೊಳಿಸುವ ಮೂಲಕ ಅಭಿವೃದ್ಧಿಯನ್ನು ಸರಳಗೊಳಿಸುತ್ತದೆ, ಇದು C ಮತ್ತು C++ ನಂತಹ ಭಾಷೆಗಳಿಗೆ ಹೋಲಿಸಿದರೆ ಒಂದು ಗಮನಾರ್ಹ ಪ್ರಯೋಜನವಾಗಿದೆ. JVM ನ GC ಈ ಬಳಕೆಯಾಗದ ಆಬ್ಜೆಕ್ಟ್‌ಗಳನ್ನು ಗುರುತಿಸಿ ತೆಗೆದುಹಾಕುತ್ತದೆ, ಭವಿಷ್ಯದ ಆಬ್ಜೆಕ್ಟ್ ರಚನೆಗೆ ಮೆಮೊರಿಯನ್ನು ಲಭ್ಯವಾಗುವಂತೆ ಮಾಡುತ್ತದೆ. ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್‌ನ ಆಯ್ಕೆ ಮತ್ತು ಅದರ ಟ್ಯೂನಿಂಗ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ಆಳವಾದ ಪರಿಣಾಮ ಬೀರುತ್ತವೆ, ಅವುಗಳೆಂದರೆ:

JVM ನಲ್ಲಿರುವ ವಿವಿಧ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್‌ಗಳು

JVM ವಿವಿಧ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್‌ಗಳನ್ನು ನೀಡುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ ತನ್ನದೇ ಆದ ಸಾಮರ್ಥ್ಯ ಮತ್ತು ದೌರ್ಬಲ್ಯಗಳನ್ನು ಹೊಂದಿದೆ. ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್‌ನ ಆಯ್ಕೆಯು ಅಪ್ಲಿಕೇಶನ್‌ನ ಅವಶ್ಯಕತೆಗಳು ಮತ್ತು ಕೆಲಸದ ಹೊರೆಯ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಕೆಲವು ಪ್ರಮುಖವಾದವುಗಳನ್ನು ಅನ್ವೇಷಿಸೋಣ:

1. ಸೀರಿಯಲ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್

ಸೀರಿಯಲ್ ಜಿಸಿ ಒಂದು ಸಿಂಗಲ್-ಥ್ರೆಡ್ ಕಲೆಕ್ಟರ್ ಆಗಿದ್ದು, ಮುಖ್ಯವಾಗಿ ಸಿಂಗಲ್-ಕೋರ್ ಮೆಷಿನ್‌ಗಳಲ್ಲಿ ಚಲಿಸುವ ಅಥವಾ ಅತಿ ಸಣ್ಣ ಹೀಪ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸೂಕ್ತವಾಗಿದೆ. ಇದು ಸರಳವಾದ ಕಲೆಕ್ಟರ್ ಮತ್ತು ಪೂರ್ಣ ಜಿಸಿ ಸೈಕಲ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ. ಇದರ ಮುಖ್ಯ ಅನಾನುಕೂಲವೆಂದರೆ ದೀರ್ಘ 'ಸ್ಟಾಪ್-ದಿ-ವರ್ಲ್ಡ್' ವಿರಾಮಗಳು, ಇದು ಕಡಿಮೆ ಲೇಟೆನ್ಸಿ ಅಗತ್ಯವಿರುವ ಪ್ರೊಡಕ್ಷನ್ ಪರಿಸರಗಳಿಗೆ ಸೂಕ್ತವಲ್ಲದಂತೆ ಮಾಡುತ್ತದೆ.

2. ಪ್ಯಾರಲಲ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ (ಥ್ರೂಪುಟ್ ಕಲೆಕ್ಟರ್)

ಪ್ಯಾರಲಲ್ ಜಿಸಿ, ಥ್ರೂಪುಟ್ ಕಲೆಕ್ಟರ್ ಎಂದೂ ಕರೆಯಲ್ಪಡುತ್ತದೆ, ಅಪ್ಲಿಕೇಶನ್ ಥ್ರೂಪುಟ್ ಅನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ. ಇದು ಮೈನರ್ ಮತ್ತು ಮೇಜರ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಬಹು ಥ್ರೆಡ್‌ಗಳನ್ನು ಬಳಸುತ್ತದೆ, ಪ್ರತ್ಯೇಕ ಜಿಸಿ ಸೈಕಲ್‌ಗಳ ಅವಧಿಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಬ್ಯಾಚ್ ಪ್ರೊಸೆಸಿಂಗ್ ಜಾಬ್‌ಗಳಂತಹ ಕಡಿಮೆ ಲೇಟೆನ್ಸಿಗಿಂತ ಥ್ರೂಪುಟ್ ಅನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವುದು ಹೆಚ್ಚು ಮುಖ್ಯವಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಇದು ಉತ್ತಮ ಆಯ್ಕೆಯಾಗಿದೆ.

3. CMS (Concurrent Mark Sweep) ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ (ಬಳಕೆಯಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ)

ಅಪ್ಲಿಕೇಶನ್ ಥ್ರೆಡ್‌ಗಳೊಂದಿಗೆ ಏಕಕಾಲದಲ್ಲಿ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್‌ನ ಹೆಚ್ಚಿನ ಭಾಗವನ್ನು ನಿರ್ವಹಿಸುವ ಮೂಲಕ ವಿರಾಮ ಸಮಯವನ್ನು ಕಡಿಮೆ ಮಾಡಲು CMS ಅನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಇದು ಕನ್‌ಕರೆಂಟ್ ಮಾರ್ಕ್-ಸ್ವೀಪ್ ವಿಧಾನವನ್ನು ಬಳಸಿದೆ. ಪ್ಯಾರಲಲ್ ಜಿಸಿಗಿಂತ CMS ಕಡಿಮೆ ವಿರಾಮಗಳನ್ನು ಒದಗಿಸಿದರೂ, ಇದು ಫ್ರಾಗ್ಮೆಂಟೇಶನ್‌ನಿಂದ ಬಳಲುತ್ತಿತ್ತು ಮತ್ತು ಹೆಚ್ಚಿನ ಸಿಪಿಯು ಓವರ್‌ಹೆಡ್ ಹೊಂದಿತ್ತು. ಜಾವಾ 9 ರಿಂದ CMS ಅನ್ನು ಬಳಕೆಯಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ ಮತ್ತು ಹೊಸ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಇನ್ನು ಮುಂದೆ ಶಿಫಾರಸು ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಇದನ್ನು G1GC ಯಿಂದ ಬದಲಾಯಿಸಲಾಗಿದೆ.

4. G1GC (ಗಾರ್ಬೇಜ್-ಫಸ್ಟ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್)

G1GC ಜಾವಾ 9 ರಿಂದ ಡೀಫಾಲ್ಟ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಆಗಿದೆ ಮತ್ತು ಇದನ್ನು ದೊಡ್ಡ ಹೀಪ್ ಗಾತ್ರಗಳು ಮತ್ತು ಕಡಿಮೆ ವಿರಾಮ ಸಮಯಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಇದು ಹೀಪ್ ಅನ್ನು ಪ್ರದೇಶಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ ಮತ್ತು ಹೆಚ್ಚು ಕಸದಿಂದ ತುಂಬಿರುವ ಪ್ರದೇಶಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಆದ್ಯತೆ ನೀಡುತ್ತದೆ, ಆದ್ದರಿಂದ 'ಗಾರ್ಬೇಜ್-ಫಸ್ಟ್' ಎಂಬ ಹೆಸರು ಬಂದಿದೆ. G1GC ಥ್ರೂಪುಟ್ ಮತ್ತು ಲೇಟೆನ್ಸಿ ನಡುವೆ ಉತ್ತಮ ಸಮತೋಲನವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದು ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಬಹುಮುಖ ಆಯ್ಕೆಯಾಗಿದೆ. ಇದು ನಿರ್ದಿಷ್ಟ ಗುರಿಯ (ಉದಾಹರಣೆಗೆ, 200 ಮಿಲಿಸೆಕೆಂಡುಗಳು) ಅಡಿಯಲ್ಲಿ ವಿರಾಮ ಸಮಯವನ್ನು ಇರಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ.

5. ZGC (Z ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್)

ZGC ಜಾವಾ 11 ರಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ಕಡಿಮೆ-ಲೇಟೆನ್ಸಿ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಆಗಿದೆ (ಜಾವಾ 11 ರಲ್ಲಿ ಪ್ರಾಯೋಗಿಕ, ಜಾವಾ 15 ರಿಂದ ಪ್ರೊಡಕ್ಷನ್-ರೆಡಿ). ಇದು ಹೀಪ್ ಗಾತ್ರವನ್ನು ಲೆಕ್ಕಿಸದೆ, ಜಿಸಿ ವಿರಾಮ ಸಮಯವನ್ನು 10 ಮಿಲಿಸೆಕೆಂಡುಗಳಷ್ಟು ಕಡಿಮೆ ಮಾಡುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ. ZGC ಏಕಕಾಲದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಅಪ್ಲಿಕೇಶನ್ ಬಹುತೇಕ ಅಡೆತಡೆಯಿಲ್ಲದೆ ಚಾಲನೆಯಲ್ಲಿರುತ್ತದೆ. ಹೆಚ್ಚಿನ ಆವರ್ತನದ ಟ್ರೇಡಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳು ಅಥವಾ ಆನ್‌ಲೈನ್ ಗೇಮಿಂಗ್ ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳಂತಹ ಅತ್ಯಂತ ಕಡಿಮೆ ಲೇಟೆನ್ಸಿ ಅಗತ್ಯವಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಇದು ಸೂಕ್ತವಾಗಿದೆ. ಆಬ್ಜೆಕ್ಟ್ ರೆಫರೆನ್ಸ್‌ಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ZGC ಕಲರ್ಡ್ ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ಬಳಸುತ್ತದೆ.

6. ಶೆನನ್‌ಡೋವಾ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್

ಶೆನನ್‌ಡೋವಾ ರೆಡ್ ಹ್ಯಾಟ್‌ನಿಂದ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾದ ಕಡಿಮೆ-ವಿರಾಮ-ಸಮಯದ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಆಗಿದೆ ಮತ್ತು ZGC ಗೆ ಸಂಭಾವ್ಯ ಪರ್ಯಾಯವಾಗಿದೆ. ಇದು ಏಕಕಾಲೀನ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಮಾಡುವ ಮೂಲಕ ಅತಿ ಕಡಿಮೆ ವಿರಾಮ ಸಮಯವನ್ನು ಗುರಿಯಾಗಿಸಿಕೊಂಡಿದೆ. ಶೆನನ್‌ಡೋವಾದ ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸವೆಂದರೆ ಅದು ಏಕಕಾಲದಲ್ಲಿ ಹೀಪ್ ಅನ್ನು ಕಾಂಪ್ಯಾಕ್ಟ್ ಮಾಡಬಹುದು, ಇದು ಫ್ರಾಗ್ಮೆಂಟೇಶನ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಶೆನನ್‌ಡೋವಾ OpenJDK ಮತ್ತು ರೆಡ್ ಹ್ಯಾಟ್‌ನ ಜಾವಾ ವಿತರಣೆಗಳಲ್ಲಿ ಪ್ರೊಡಕ್ಷನ್-ರೆಡಿಯಾಗಿದೆ. ಇದು ಕಡಿಮೆ ವಿರಾಮ ಸಮಯ ಮತ್ತು ಥ್ರೂಪುಟ್ ಗುಣಲಕ್ಷಣಗಳಿಗೆ ಹೆಸರುವಾಸಿಯಾಗಿದೆ. ಶೆನನ್‌ಡೋವಾ ಅಪ್ಲಿಕೇಶನ್‌ನೊಂದಿಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಏಕಕಾಲದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಇದು ಯಾವುದೇ ಕ್ಷಣದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್‌ನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ನಿಲ್ಲಿಸದ ಪ್ರಯೋಜನವನ್ನು ಹೊಂದಿದೆ. ಹೆಚ್ಚುವರಿ ಥ್ರೆಡ್ ಮೂಲಕ ಕೆಲಸವನ್ನು ಮಾಡಲಾಗುತ್ತದೆ.

ಪ್ರಮುಖ GC ಟ್ಯೂನಿಂಗ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು

ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅನ್ನು ಟ್ಯೂನ್ ಮಾಡುವುದು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ವಿವಿಧ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಸರಿಹೊಂದಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಸ್ಪಷ್ಟತೆಗಾಗಿ ವರ್ಗೀಕರಿಸಲಾದ ಕೆಲವು ನಿರ್ಣಾಯಕ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಇಲ್ಲಿವೆ:

1. ಹೀಪ್ ಗಾತ್ರದ ಕಾನ್ಫಿಗರೇಶನ್

2. ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಆಯ್ಕೆ

3. G1GC-ನಿರ್ದಿಷ್ಟ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು

4. ZGC-ನಿರ್ದಿಷ್ಟ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು

5. ಇತರ ಪ್ರಮುಖ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು

ಪ್ರಾಯೋಗಿಕ GC ಟ್ಯೂನಿಂಗ್ ಉದಾಹರಣೆಗಳು

ವಿವಿಧ ಸನ್ನಿವೇಶಗಳಿಗಾಗಿ ಕೆಲವು ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳನ್ನು ನೋಡೋಣ. ಇವುಗಳು ಆರಂಭಿಕ ಬಿಂದುಗಳಾಗಿವೆ ಮತ್ತು ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಅಪ್ಲಿಕೇಶನ್‌ನ ಗುಣಲಕ್ಷಣಗಳನ್ನು ಆಧರಿಸಿ ಪ್ರಯೋಗ ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆ ಅಗತ್ಯವಿರುತ್ತದೆ ಎಂಬುದನ್ನು ನೆನಪಿಡಿ. ಸೂಕ್ತವಾದ ಬೇಸ್‌ಲೈನ್ ಹೊಂದಲು ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವುದು ಮುಖ್ಯ. ಅಲ್ಲದೆ, ಹಾರ್ಡ್‌ವೇರ್‌ಗೆ ಅನುಗುಣವಾಗಿ ಫಲಿತಾಂಶಗಳು ಬದಲಾಗಬಹುದು.

1. ಬ್ಯಾಚ್ ಪ್ರೊಸೆಸಿಂಗ್ ಅಪ್ಲಿಕೇಶನ್ (ಥ್ರೂಪುಟ್ ಕೇಂದ್ರೀಕೃತ)

ಬ್ಯಾಚ್ ಪ್ರೊಸೆಸಿಂಗ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ, ಪ್ರಾಥಮಿಕ ಗುರಿಯು ಸಾಮಾನ್ಯವಾಗಿ ಥ್ರೂಪುಟ್ ಅನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವುದಾಗಿದೆ. ಕಡಿಮೆ ಲೇಟೆನ್ಸಿ ಅಷ್ಟು ನಿರ್ಣಾಯಕವಲ್ಲ. ಪ್ಯಾರಲಲ್ ಜಿಸಿ ಸಾಮಾನ್ಯವಾಗಿ ಉತ್ತಮ ಆಯ್ಕೆಯಾಗಿದೆ.

java -Xms4g -Xmx4g -XX:+UseParallelGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar mybatchapp.jar

ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ನಾವು ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಹೀಪ್ ಗಾತ್ರವನ್ನು 4GB ಗೆ ಹೊಂದಿಸಿದ್ದೇವೆ, ಪ್ಯಾರಲಲ್ ಜಿಸಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದೇವೆ ಮತ್ತು ವಿವರವಾದ ಜಿಸಿ ಲಾಗಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದೇವೆ.

2. ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ (ಲೇಟೆನ್ಸಿ ಸೆನ್ಸಿಟಿವ್)

ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ, ಉತ್ತಮ ಬಳಕೆದಾರರ ಅನುಭವಕ್ಕಾಗಿ ಕಡಿಮೆ ಲೇಟೆನ್ಸಿ ನಿರ್ಣಾಯಕವಾಗಿದೆ. G1GC ಅಥವಾ ZGC (ಅಥವಾ ಶೆನನ್‌ಡೋವಾ) ಅನ್ನು ಹೆಚ್ಚಾಗಿ ಆದ್ಯತೆ ನೀಡಲಾಗುತ್ತದೆ.

G1GC ಬಳಸುವುದು:

java -Xms8g -Xmx8g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar mywebapp.jar

ಈ ಕಾನ್ಫಿಗರೇಶನ್ ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಹೀಪ್ ಗಾತ್ರವನ್ನು 8GB ಗೆ ಹೊಂದಿಸುತ್ತದೆ, G1GC ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಗರಿಷ್ಠ ವಿರಾಮ ಸಮಯದ ಗುರಿಯನ್ನು 200 ಮಿಲಿಸೆಕೆಂಡುಗಳಿಗೆ ಹೊಂದಿಸುತ್ತದೆ. ನಿಮ್ಮ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಅನುಗುಣವಾಗಿ MaxGCPauseMillis ಮೌಲ್ಯವನ್ನು ಸರಿಹೊಂದಿಸಿ.

ZGC ಬಳಸುವುದು (Java 11+ ಅಗತ್ಯವಿದೆ):

java -Xms8g -Xmx8g -XX:+UseZGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar mywebapp.jar

ಈ ಉದಾಹರಣೆಯು ಇದೇ ರೀತಿಯ ಹೀಪ್ ಕಾನ್ಫಿಗರೇಶನ್‌ನೊಂದಿಗೆ ZGC ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ZGC ಅನ್ನು ಅತಿ ಕಡಿಮೆ ಲೇಟೆನ್ಸಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿರುವುದರಿಂದ, ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ವಿರಾಮ ಸಮಯದ ಗುರಿಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವ ಅಗತ್ಯವಿಲ್ಲ. ನೀವು ನಿರ್ದಿಷ್ಟ ಸನ್ನಿವೇಶಗಳಿಗಾಗಿ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಸೇರಿಸಬಹುದು; ಉದಾಹರಣೆಗೆ, ನಿಮಗೆ ಹಂಚಿಕೆ ದರದ ಸಮಸ್ಯೆಗಳಿದ್ದರೆ, ನೀವು -XX:ZAllocationSpikeFactor=2 ಅನ್ನು ಪ್ರಯತ್ನಿಸಬಹುದು.

3. ಹೈ-ಫ್ರೀಕ್ವೆನ್ಸಿ ಟ್ರೇಡಿಂಗ್ ಸಿಸ್ಟಮ್ (ಅತ್ಯಂತ ಕಡಿಮೆ ಲೇಟೆನ್ಸಿ)

ಹೈ-ಫ್ರೀಕ್ವೆನ್ಸಿ ಟ್ರೇಡಿಂಗ್ ಸಿಸ್ಟಮ್‌ಗಳಿಗೆ, ಅತ್ಯಂತ ಕಡಿಮೆ ಲೇಟೆನ್ಸಿ ಅತಿ ಮುಖ್ಯ. ZGC ಒಂದು ಆದರ್ಶ ಆಯ್ಕೆಯಾಗಿದೆ, ಅಪ್ಲಿಕೇಶನ್ ಅದರೊಂದಿಗೆ ಹೊಂದಿಕೊಳ್ಳುತ್ತದೆ ಎಂದು ಭಾವಿಸಿದರೆ. ನೀವು ಜಾವಾ 8 ಅನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ ಅಥವಾ ಹೊಂದಾಣಿಕೆಯ ಸಮಸ್ಯೆಗಳಿದ್ದರೆ, ಶೆನನ್‌ಡೋವಾವನ್ನು ಪರಿಗಣಿಸಿ.

java -Xms16g -Xmx16g -XX:+UseZGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar mytradingapp.jar

ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ ಉದಾಹರಣೆಯಂತೆಯೇ, ನಾವು ಹೀಪ್ ಗಾತ್ರವನ್ನು ಹೊಂದಿಸಿ ZGC ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತೇವೆ. ಕೆಲಸದ ಹೊರೆಯನ್ನು ಆಧರಿಸಿ ZGC ನಿರ್ದಿಷ್ಟ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಮತ್ತಷ್ಟು ಟ್ಯೂನ್ ಮಾಡುವುದನ್ನು ಪರಿಗಣಿಸಿ.

4. ದೊಡ್ಡ ಡೇಟಾಸೆಟ್‌ಗಳನ್ನು ಹೊಂದಿರುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು

ಅತಿ ದೊಡ್ಡ ಡೇಟಾಸೆಟ್‌ಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ, ಎಚ್ಚರಿಕೆಯ ಪರಿಗಣನೆ ಅಗತ್ಯ. ದೊಡ್ಡ ಹೀಪ್ ಗಾತ್ರವನ್ನು ಬಳಸುವುದು ಅಗತ್ಯವಾಗಬಹುದು, ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆ ಇನ್ನಷ್ಟು ಮುಖ್ಯವಾಗುತ್ತದೆ. ಡೇಟಾಸೆಟ್ ಚಿಕ್ಕದಾಗಿದ್ದರೆ ಮತ್ತು ಗಾತ್ರವು ಯಂಗ್ ಜನರೇಶನ್‌ಗೆ ಹತ್ತಿರವಾಗಿದ್ದರೆ ಡೇಟಾವನ್ನು ಯಂಗ್ ಜನರೇಶನ್‌ನಲ್ಲಿ ಕ್ಯಾಶ್ ಮಾಡಬಹುದು.

ಕೆಳಗಿನ ಅಂಶಗಳನ್ನು ಪರಿಗಣಿಸಿ:

ದೊಡ್ಡ ಡೇಟಾಸೆಟ್‌ಗಾಗಿ, ಯಂಗ್ ಜನರೇಶನ್ ಮತ್ತು ಓಲ್ಡ್ ಜನರೇಶನ್ ಅನುಪಾತವು ಮುಖ್ಯವಾಗಿದೆ. ಕಡಿಮೆ-ವಿರಾಮ ಸಮಯವನ್ನು ಸಾಧಿಸಲು ಕೆಳಗಿನ ಉದಾಹರಣೆಯನ್ನು ಪರಿಗಣಿಸಿ:

java -Xms32g -Xmx32g -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1NewSizePercent=20 -XX:G1MaxNewSizePercent=30 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar mydatasetapp.jar

ಈ ಉದಾಹರಣೆಯು ದೊಡ್ಡ ಹೀಪ್ ಅನ್ನು (32GB) ಹೊಂದಿಸುತ್ತದೆ, ಮತ್ತು G1GC ಅನ್ನು ಕಡಿಮೆ ಗುರಿ ವಿರಾಮ ಸಮಯ ಮತ್ತು ಸರಿಹೊಂದಿಸಲಾದ ಯಂಗ್ ಜನರೇಶನ್ ಗಾತ್ರದೊಂದಿಗೆ ಉತ್ತಮಗೊಳಿಸುತ್ತದೆ. ಅದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಸರಿಹೊಂದಿಸಿ.

ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ವಿಶ್ಲೇಷಣೆ

GC ಟ್ಯೂನಿಂಗ್ ಒಂದು-ಬಾರಿಯ ಪ್ರಯತ್ನವಲ್ಲ; ಇದು ಎಚ್ಚರಿಕೆಯ ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ವಿಶ್ಲೇಷಣೆ ಅಗತ್ಯವಿರುವ ಪುನರಾವರ್ತಿತ ಪ್ರಕ್ರಿಯೆ. ಮೇಲ್ವಿಚಾರಣೆಯನ್ನು ಹೇಗೆ ಸಂಪರ್ಕಿಸುವುದು ಎಂಬುದು ಇಲ್ಲಿದೆ:

1. ಜಿಸಿ ಲಾಗಿಂಗ್

-XX:+PrintGCDetails, -XX:+PrintGCTimeStamps, ಮತ್ತು -Xloggc: ನಂತಹ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವಿವರವಾದ ಜಿಸಿ ಲಾಗಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ. ವಿರಾಮ ಸಮಯಗಳು, ಜಿಸಿ ಸೈಕಲ್‌ಗಳ ಆವರ್ತನ, ಮತ್ತು ಮೆಮೊರಿ ಬಳಕೆಯ ಮಾದರಿಗಳು ಸೇರಿದಂತೆ ಜಿಸಿ ನಡವಳಿಕೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಲಾಗ್ ಫೈಲ್‌ಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ. ಜಿಸಿ ಲಾಗ್‌ಗಳನ್ನು ದೃಶ್ಯೀಕರಿಸಲು ಮತ್ತು ವಿಶ್ಲೇಷಿಸಲು GCViewer ಅಥವಾ GCeasy ನಂತಹ ಸಾಧನಗಳನ್ನು ಬಳಸುವುದನ್ನು ಪರಿಗಣಿಸಿ.

2. ಅಪ್ಲಿಕೇಶನ್ ಪರ್ಫಾರ್ಮೆನ್ಸ್ ಮಾನಿಟರಿಂಗ್ (APM) ಪರಿಕರಗಳು

ಸಿಪಿಯು ಬಳಕೆ, ಮೆಮೊರಿ ಬಳಕೆ, ಪ್ರತಿಕ್ರಿಯೆ ಸಮಯಗಳು, ಮತ್ತು ದೋಷ ದರಗಳು ಸೇರಿದಂತೆ ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು APM ಪರಿಕರಗಳನ್ನು (ಉದಾ., Datadog, New Relic, AppDynamics) ಬಳಸಿ. ಈ ಪರಿಕರಗಳು ಜಿಸಿಗೆ ಸಂಬಂಧಿಸಿದ ಅಡಚಣೆಗಳನ್ನು ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡಬಹುದು ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ನಡವಳಿಕೆಯ ಬಗ್ಗೆ ಒಳನೋಟಗಳನ್ನು ಒದಗಿಸಬಹುದು. ಮಾರುಕಟ್ಟೆಯಲ್ಲಿರುವ Prometheus ಮತ್ತು Grafana ನಂತಹ ಪರಿಕರಗಳನ್ನು ನೈಜ-ಸಮಯದ ಕಾರ್ಯಕ್ಷಮತೆಯ ಒಳನೋಟಗಳನ್ನು ನೋಡಲು ಸಹ ಬಳಸಬಹುದು.

3. ಹೀಪ್ ಡಂಪ್‌ಗಳು

OutOfMemoryErrors ಸಂಭವಿಸಿದಾಗ ಹೀಪ್ ಡಂಪ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಿ (-XX:+HeapDumpOnOutOfMemoryError ಮತ್ತು -XX:HeapDumpPath= ಬಳಸಿ). ಮೆಮೊರಿ ಲೀಕ್‌ಗಳನ್ನು ಗುರುತಿಸಲು ಮತ್ತು ಆಬ್ಜೆಕ್ಟ್ ಹಂಚಿಕೆ ಮಾದರಿಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಎಕ್ಲಿಪ್ಸ್ MAT (ಮೆಮೊರಿ ಅನಾಲೈಜರ್ ಟೂಲ್) ನಂತಹ ಪರಿಕರಗಳನ್ನು ಬಳಸಿ ಹೀಪ್ ಡಂಪ್‌ಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಿ. ಹೀಪ್ ಡಂಪ್‌ಗಳು ಒಂದು ನಿರ್ದಿಷ್ಟ ಸಮಯದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್‌ನ ಮೆಮೊರಿ ಬಳಕೆಯ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ಅನ್ನು ಒದಗಿಸುತ್ತವೆ.

4. ಪ್ರೊಫೈಲಿಂಗ್

ನಿಮ್ಮ ಕೋಡ್‌ನಲ್ಲಿನ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅಡಚಣೆಗಳನ್ನು ಗುರುತಿಸಲು ಜಾವಾ ಪ್ರೊಫೈಲಿಂಗ್ ಪರಿಕರಗಳನ್ನು (ಉದಾ., JProfiler, YourKit) ಬಳಸಿ. ಈ ಪರಿಕರಗಳು ಆಬ್ಜೆಕ್ಟ್ ರಚನೆ, ಮೆಥಡ್ ಕಾಲ್‌ಗಳು, ಮತ್ತು ಸಿಪಿಯು ಬಳಕೆಯ ಬಗ್ಗೆ ಒಳನೋಟಗಳನ್ನು ಒದಗಿಸಬಹುದು, ಇದು ಅಪ್ಲಿಕೇಶನ್‌ನ ಕೋಡ್ ಅನ್ನು ಉತ್ತಮಗೊಳಿಸುವ ಮೂಲಕ ಪರೋಕ್ಷವಾಗಿ ಜಿಸಿಯನ್ನು ಟ್ಯೂನ್ ಮಾಡಲು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.

GC ಟ್ಯೂನಿಂಗ್‌ಗಾಗಿ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು

ತೀರ್ಮಾನ

ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಟ್ಯೂನಿಂಗ್ ಜಾವಾ ಅಪ್ಲಿಕೇಶನ್ ಕಾರ್ಯಕ್ಷಮತೆ ಆಪ್ಟಿಮೈಸೇಶನ್‌ನ ಒಂದು ನಿರ್ಣಾಯಕ ಅಂಶವಾಗಿದೆ. ವಿವಿಧ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್‌ಗಳು, ಟ್ಯೂನಿಂಗ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳು ಮತ್ತು ಮೇಲ್ವಿಚಾರಣಾ ತಂತ್ರಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯಕ್ಷಮತೆಯ ಅವಶ್ಯಕತೆಗಳನ್ನು ಪೂರೈಸಲು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನೀವು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಉತ್ತಮಗೊಳಿಸಬಹುದು. ಜಿಸಿ ಟ್ಯೂನಿಂಗ್ ಒಂದು ಪುನರಾವರ್ತಿತ ಪ್ರಕ್ರಿಯೆಯಾಗಿದೆ ಮತ್ತು ಅತ್ಯುತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ಸಾಧಿಸಲು ನಿರಂತರ ಮೇಲ್ವಿಚಾರಣೆ ಮತ್ತು ವಿಶ್ಲೇಷಣೆ ಅಗತ್ಯವಿರುತ್ತದೆ ಎಂಬುದನ್ನು ನೆನಪಿಡಿ. ಡೀಫಾಲ್ಟ್‌ಗಳೊಂದಿಗೆ ಪ್ರಾರಂಭಿಸಿ, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಿ, ಮತ್ತು ನಿಮ್ಮ ಅಗತ್ಯಗಳಿಗೆ ಉತ್ತಮವಾಗಿ ಸರಿಹೊಂದುವದನ್ನು ಕಂಡುಹಿಡಿಯಲು ವಿವಿಧ ಕಾನ್ಫಿಗರೇಶನ್‌ಗಳೊಂದಿಗೆ ಪ್ರಯೋಗ ಮಾಡಿ. ಸರಿಯಾದ ಕಾನ್ಫಿಗರೇಶನ್ ಮತ್ತು ಮೇಲ್ವಿಚಾರಣೆಯೊಂದಿಗೆ, ನಿಮ್ಮ ಜಾಗತಿಕ ವ್ಯಾಪ್ತಿಯನ್ನು ಲೆಕ್ಕಿಸದೆ, ನಿಮ್ಮ ಜಾವಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಸಮರ್ಥವಾಗಿ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂದು ನೀವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಬಹುದು.