• JVM命令

    1、jps (Java Virtual Machine Process Status Tool) 显示当前系统的java进程情况,及其id号 -q 只显示pid,不显示class名称 -m 输出传递给main方法的参数,在嵌入式jvm上可能是null -l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名 -v 输出传递给JVM的参数

    [Read More...]
  • ClassLoader 双亲委托机制

    ClassLoader是用来用来加载Class文件到JVM,以供程序使用的。 每一个自定义ClassLoader都必须继承ClassLoader这个抽象类,而每个ClassLoader都会有一个parent ClassLoader,我们可以看一下ClassLoader这个抽象类中有一个getParent()方法,这个方法用来返回当前 ClassLoader的parent,注意,这个parent不是

    [Read More...]
  • JVM之OutOfMemoryError

    1、堆溢出 将堆的最大值和最小值设置成一样的即可避免堆自动扩展,通过参数-XX:+HeapDumpOnOutOfMemoryError可以在异常时Dump出堆转储快照便于以后分析。 2、虚拟机栈和本地栈溢出 -Xoss(设置本地方法栈大小) -Xss(设置虚拟机栈大小) 两种异常 StackOverFlowError and OutOfMemoryError。 如果建立过多线程导致内存溢出,在不能

    [Read More...]
  • JVM之对象

    1、对象的创建 虚拟机遇到一条new指令时,首先将检查这个指令参数在常量池中是否能定位到一个类的符号引用,并检查这个符号代表的类是否已被加载、解析和初始化过。如果没有加载必须先执行相应的类加载过程。类加载完成后,JVM将为新生对象分配内存。为对象分配内存等同于把一块确定大小的内存从Java Heap中划分出来。假设JVM内存是规整的,可用指针碰撞来分配如果是不规整,使用和未使用的交错,使用空闲列表

    [Read More...]
  • 类加载机制

    有赋值的类 成员属性是按声明的位置先后进行初始化(与访问标志符无关); 成员属性的初始化会优先于构造函数的初始化; 初始化动作都是在构造函数中完成的, 如果没有显示构造函数,那么编译器会产生一个无入参构造函数来完成初始工作; 建议声明成员属性时没有必要赋于null,等到真实需要使用成成员时再初始化或传递值; 非静态代码块的执行也是被放到构造函数中。 非静态代码块并不影响代码顺序

    [Read More...]
  • JVM之运行时数据区域

    运行时数据区主要分为七部分,程序计数器(Program Counter Register)、虚拟机栈(VM Stacks)、本地方方法栈(Native Method Stacks)、堆(Heap)、方法区(Area Method)。 [read more=”Read more” less=”Read less”] 程序计数器(Program

    [Read More...]