jvm调优: DOC 界面--jps (查看当前有哪些进程执行) jmap(查看当前进程中对应线程数及对象磁盘位置信息、线程中对象在内存中所占用空间) jconsole(查看整体进程中对象生命周期及内存中运行的情况)
弄清楚jvm内存模型是jvm调优的第一步:垃圾回收是一种在堆内存中找出那些对象在被使用(指针指向的对象)那些闲置(指针未引用),并将闲置的清除,压缩内存空间,为新进对象让路;堆内存和方法区内存是所有线程所共享的 栈内存是每个线程互不共享的
jvm模型分三块--》
method(方法区):存储static变量、.java自编译生成的.class Object(内存中只存储一份) 类的结构信息 例如:常量池、构造函数、普通方法的字节码内容,还有一些类、实例、接口初始化时用到的特殊方法;当创建接口和类时,如果构造运行时常量池所需空间超过method area 所能分配的最大内存空间就会抛出outofmemorerror
在每一次运行时常量池都会分配到jvm方法区中,在类和接口被加载到jvm中时,对应的运行时常量池也会被创建
heap(堆区):.method object派生类(1MB>)对象----最容器造成内存溢出区域 分三块 old Generation area(老年代) | yong Generation area(新生代) | permanent Generation
stack(栈区):存储(<1mB)object对象 、引用类型变量、基本类型、applicationContext 环境;
虚拟机栈:java方法执行的内存模型,每个方法执行时候同时会创建一个线帧,用于存储局部变量表,