मैं इस बुनियादी प्रोग्राम है जो कुछ नहीं बल्कि निवेश के लिए इंतजार कर वहाँ बैठते हैं करता है:जावा कोड कैश आकार क्यों बढ़ रहा है?
import java.io.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Basic {
public static void main(String[] args) throws Exception{
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
input=br.readLine();
}catch(IOException io){
io.printStackTrace();
}
}
}
और यह जब मैं चलाएँ:
:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=15001 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false Basic
मैं JConsole के माध्यम से कनेक्ट इस को देखने के लिए
क्या यह केवल इसलिए है क्योंकि मूल जावा बाइटकोड पहले संकलित किया जा रहा है? जब प्रक्रिया कुछ भी नहीं कर रही है तो कोडेकैच कैसे बढ़ सकता है?
और जब मैं इस संस्करण (जो Thread.sleep
का उपयोग करता है):
तो ... क्यों हो रहा है: मैं इस मिल
public class Basic {
public static void main(String[] args) throws Exception{
while(true) {
Thread.sleep(5000);
}
}
}
?
पीएस
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) Client VM (build 20.12-b01, mixed mode, sharing)
सिर्फ इसलिए कि 'मुख्य' धागा कुछ भी नहीं कर रहा है इसका मतलब यह नहीं है कि जेवीएम कुछ भी नहीं कर रहा है। जीसी शायद यह देखने के लिए जांच कर रहा है कि क्या इसे चलाने और थ्रेड की निगरानी करने की आवश्यकता है, इसलिए जेकनसोल काम कर सकता है। – Jeffrey