摘要:
JVM可以检测到synchronized导致的死锁,考虑下面的代码: public class ClassA { public static String monitor1 = "monitor1"; public static String monitor2 = "monitor2"; publi 阅读全文
摘要:
不是你写的那样 int i; String a=new String("++++"+i);或者 String a="+++"+i; 编译器编译成 new StringBuilder("+++").append(i).toString(); 阅读全文
摘要:
jvisualvm是SUN/Oracle JDK自带的JVM运行状态监测工具,能够获取JVM运行状态的各种信息,包括Thread Dump和Heap Dump,在可以使用的情况下建议使用此工具监测JVM运行状态。 连接远程JVM jvisualvm只能远程连接启用了JMX远程监测的JVM,JVM启动 阅读全文
摘要:
Thread Dump/线程转储 Thread Dump中包含下列信息: 所有JVM中启动了但是未结束的Thread列表; 每个Thread当前所处的状态及其调用栈(Stack Trace); JVM内部是否出现死锁(Deadlock); 基于Thread Dump信息可以确认JVM当前的执行状态, 阅读全文
摘要:
通常内存溢出时JVM会提示具体的内存溢出原因,下面是几种常见的情况及简要的原因说明及相关的JVM配置。 栈溢出:StackOverflowError JVM输出信息:“java.lang.StackOverflowError”。 JVM相关机制:JVM在执行Java方法调用时需要使用栈传递调用参数、返回值以及保存局部变量表,通常组织为栈帧(Stack Frame)结构。从概念上说,每次Jav... 阅读全文
摘要:
JVM运行过程中有可能异常退出,即JVM进程忽然消失,此时通常不是Java Stack或者Java Heap出现异常,而是与OS本地堆栈有关。JVM中运行的应用系统通常难以处理此问题,但如果应用系统中使用了JNI,则有可能与此部分代码相关。 在Windows上,JVM异常退出时通常会生成“hs_er 阅读全文