java增强: jvm内存模型

  1. jvm存储模型:堆,栈,方法区….

  2. jvm各区域内存:调配控制

  3. jvm内存的动态分配,回收, (对象的创建,垃圾回收gc)

  4. jvm性能监测工具: jconsole, jvisualvm, jmap   (gc监测工具:jstat)

 JVM (Java Virtual Machine, 它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的, 分为JVM指令系统 ,JVM垃圾回收机制, JVM运行时数据区-内存模型)

《java增强: jvm内存模型》

JVM内存的各区域作用

1) 方法区

用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译后的代码等信息。方法区是线程间共享的,当两个线程同时需要加载一个类型时,只有一个类会请求ClassLoader加载,另一个线程会等待。

2) 堆区

虚拟机中用于存放对象与数组实例的地方,垃圾回收的主要区域就是这里(还可能有方法区)。如果垃圾收集算法采用按代收集(目前大都是这样),这部分还可以细分为新生代和老年代。新生代又可能分为Eden区,From Survivor区和To Survivor区,主要是为了垃圾回收。所有的线程共享Java堆,在这里还可以划分线程私有的缓冲区(Thread Local Allocation Buffer,TLAB)。

3)栈区

虚拟机栈也是线程私有的,每创建一个线程,虚拟机就会为这个线程创建一个虚拟机栈,虚拟机栈表示Java方法执行的内存模型,每调用一个方法,就会生成一个栈帧(Stack Frame)用于存储方法的本地变量表、操作栈、方法出口等信息,当这个方法执行完后,就会弹出相应的栈帧。

栈帧分为三部分:局部变量区(Local Variables)、操作数栈(Operand Stack)和帧数据区(Frame Data)。

如果请求的栈的深度过大,虚拟机可能会抛出StackOverflowError异常,如果虚拟机的实现中允许虚拟机栈动态扩展,当内存不足以扩展栈的时候,会抛出OutOfMemoryError异常。

4)本地方法栈

与虚拟机栈类似,只是是执行本地方法时使用的。

5) 程序寄存器

类似于PC寄存器,是一块较小的内存区域,通过程序计数器中的值寻找要执行的指令的字节码,由于多线程间切换时要恢复每一个线程的当前执行位置,所以每个线程都有自己的程序计算器。这一个区域不会有OutOfMemeryError。当执行Java方法时,这里存储的执行的指令的地址,如果执行的是本地方法,这里的值是Undefined

JVM内存分配过程

《java增强: jvm内存模型》

《java增强: jvm内存模型》

JVM堆内存: 调配

( -Xms400m -Xmx400m -XX:NewSize=300m -XX:MaxNewSize=300m -XX:NewRatio=1 

-XX:+UseSerialGC          
-XX:+UseParallelGC        
-XX:+UseParallelOldGC    
-XX:+UseConcMarkSweepGc
-XX:+UseG1GC   )       

《java增强: jvm内存模型》

堆:总内存大小-Xms400m: 最小值400m-Xmx400:  最大值400m 
 old区  
 young区-XX:NewSize=300m  初始值300m-XX:MaxNewSize=300m   最大值300m
  eden区-XX:NewRatio=1  伊甸区/单个survivor区大小的比例
  survivor-from区 
  survivor-to    区 

JVM垃圾回收算法

《java增强: jvm内存模型》

《java增强: jvm内存模型》

 JVM性能监测工具

(-XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:./gclogs   )

启动一个java进程: 一个死循环

《java增强: jvm内存模型》

查看系统进程

《java增强: jvm内存模型》

启动jconsole:  jconsole

《java增强: jvm内存模型》

启动jvisualvm:  jvisualvm

《java增强: jvm内存模型》

使用jmap -heap 查看jvm的某进程状态

《java增强: jvm内存模型》

使用jstat -gc 查看gc状态

《java增强: jvm内存模型》

    原文作者:java内存模型
    原文地址: https://blog.csdn.net/eyeofeagle/article/details/82715111
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞