Ale*_*ird 5 java performance jvm-hotspot code-caching jvm-codecache
我有这个基本程序,除了坐在那里等待输入之外什么都不做:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行这个:
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
Run Code Online (Sandbox Code Playgroud)
我通过JConsole连接看到这个:

这只是因为核心java bytcode最初被编译?当进程没有做任何事情时,如何增加codecache?
当我有这个版本(使用Thread.sleep):
public class Basic {
public static void main(String[] args) throws Exception{
while(true) {
Thread.sleep(5000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了:

那么......为什么会这样呢?
PS这是输出java -version:
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)
Run Code Online (Sandbox Code Playgroud)
我怀疑是jconsole问题本身造成的。或者更准确地说,jmxremote 可以让您jconsole查看 JVM 内部发生的情况。
我的建议:
别担心。看起来已经快要达到稳定状态了。
如果这还不够好,那么请jconsole长时间运行并观察内存使用量增长是否完全停止。
如果这还不够好,那么您可以尝试对其进行分析...尽管跟踪 jmxremote 代码(有或没有源代码)中的小存储泄漏可能具有挑战性。
| 归档时间: |
|
| 查看次数: |
3101 次 |
| 最近记录: |