2013-04-17 9 views
8

मेरे पास जावा में एक बहुत ही प्रदर्शन संवेदनशील अनुप्रयोग है। (मुझे पता है कि मुझे वास्तव में सी या कुछ और उपयोग करना चाहिए। लेकिन अब यह जावा है।) मैं वस्तुओं को बनाने और फेंकने से बचने की कोशिश कर रहा हूं। अब मुझे यह जानने की जरूरत है कि अभी भी कचरा संग्रहण कितना चल रहा है।जावा कचरा संग्रह समय?

मैं कैसे पता लगा सकता हूं?

यदि संभव हो तो मैं मिलीसेकंड या नैनोसेकंड में किसी प्रकार की संख्या लेना चाहता हूं जिसके लिए अधिक सॉफ़्टवेयर की स्थापना की आवश्यकता नहीं है।

+0

बस एक सिर ऊपर कि सी जावा से बेहतर हाथ से नीचे नहीं है - यह इस बात पर निर्भर करता है कि आप उनकी तुलना कैसे करते हैं। [यह एक अच्छी तुलना है जो मैंने पाया] (http://www.azulsystems.com/blog/cliff/2009-09-06-java-vs-c-performanceagain), नीचे की रेखा यह है कि सी जावा से बेहतर है मेमोरी पदचिह्न और संख्यात्मक रूप से गहन कार्यक्रमों के लिए, जबकि जावा में बेहतर बहु-थ्रेडिंग समर्थन है। कई साल पहले मैंने एक शोध पत्र को पाया था कि (यदि आप जावा के ढेर को सी ढेर के आकार में 4x तक बढ़ने देते हैं) तो कई स्रोतफोर्ज कार्यक्रमों के लिए दो भाषाओं के बीच कोई प्रदर्शन अंतर नहीं था। –

+0

[संभावित विलंबता के लिए कचरा संग्रह ट्यूनिंग] [http://stackoverflow.com/questions/2781797/tuning-garbage-collections-for-low-latency) –

उत्तर

2

आप इसके लिए VisualVm का उपयोग कर सकते हैं, यह वही है जो आपको चाहिए।
आप नीचे दिए गए आप जी सी गतिविधि है जो बहुत उपयोगी है है देख सकते हैं:

enter image description here

जीसी गतिविधि तुम वहाँ विवरण की एक बहुत कुछ है के अलावा की तरह: ढेर उपयोग, CPU उपयोग, वस्तु उदाहरणों उपयोग आदि

7

आप एप्लिकेशन गतिविधि की निगरानी के लिए VisualVM जैसे टूल का उपयोग कर सकते हैं। सुनिश्चित करें कि आप उचित जीसी alogorithms का उपयोग कर रहे हैं।

  • throughput कलेक्टर
  • समवर्ती कम ठहराव कलेक्टर
  • वृद्धिशील (कभी कभी ट्रेन) कम ठहराव कलेक्टर:

Oracle JVM कचरा कलेक्टरों से अधिक प्रकार प्रदान करता है इन कलेक्टरों here पर और पढ़ें।

+0

+1 कलेक्टर प्रकारों के बारे में अच्छा सुझाव :) – Stephan

+2

+1 नोट: कम जीसी कार्यक्रमों के लिए, VisualVM आपके एप्लिकेशन की तुलना में अधिक कचरा बनाएगा। इसके लिए मैं आपकीकिट का उपयोग करता हूं, जो मुफ़्त नहीं है। मैं VisualVM के साथ शुरू होगा। –

+0

विजुअलVM के लिए एक प्लगइन भी है जिसे विजुअलजीसी कहा जाता है जो दिखाता है कि वास्तविक समय में प्रत्येक हीप स्पेस के लिए क्या हो रहा है। https://blogs.oracle.com/klc/entry/visualgc_plugin_for_visualvm – Aaron

1

Jprofiler, जो थ्रेड टकराव का आकलन करने के लिए स्मृति उपयोग और गतिशील आवंटन लीक और सीपीयू प्रोफाइलिंग का आकलन करने के लिए मेमोरी प्रोफाइल दोनों सक्षम करता है।

7

या आप दे सकते हैं JVM जीसी गतिविधि प्रिंट .. ये सेटिंग्स मेरे पास है:

-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:+PrintTenuringDistribution -Xloggc:logs/gc.log 

जीसी गतिविधि को एक फ़ाइल में छपा है लॉग/gc.log ..

संबंधित मुद्दे