JAVA虚拟机(JVM)介绍

1.什么是JVM

jvm是运行在JDK的底层,负责和操作系统交互,用来屏蔽操作系统环境,提供完整的java运行环境。

操作系统装入jvm是通过jdk的java.exe来完成的。

2.JVM 内存模型(jdk8)

线程私有:程序计数器,虚拟机栈,本地方法栈

线程共享:元空间,JAVA堆

3.JAVA内存模型中堆和栈的区别

·栈自动释放,堆需要GC回收

·堆比栈的内存空间要大

·栈产生的内存碎片远小于堆,对会产生更多的内存碎片

·栈支持静态和动态分配,堆只支持动态分配

·栈的效率比堆要高

*存放的内容的区别

栈:函数中定义的基本类型变量;对象引用的变量;

堆:new产生的对象和数组;

*回收方式

栈:自动回收。函数体中定义的变量,如果超过了函数体将自动回收

堆:有GC垃圾回收器回收

4.JVM内存模块

jvm的内存模块主要分两大类:NEW Generation(新生代)和Old Generation(老年代)

4.1新生代中有一个Eden(原生代)空间,主要是用来存放新创建的对象;要有两个Survivor Spaces(幸存者区)[from,to]

分别是存放每次垃圾回收后存活下来的对象

4.2在老生代:用来存放应用程序中生命周期长的内存对象,就是在幸存者区多次垃圾回收后依然存活的对象。

4.3jvm垃圾回收的过程:

在新生代(NEW Generation)块中,每次GC存活下来的对象

  首先,由Eden拷贝某个Survivor Space

  其次,当Survivor Space空间满后,剩下的live对象被直接拷贝到Old Generation中。

  最后,每次GC后,Eden内存块都会被清空,

(注:内存溢出通常发生于OLD段垃圾回收后,仍然无内存空间容纳新的Java对象的情况。)

5.JVM三大性能调优的参数

 三大性能调优参数 -Xms  -Xmx  -Xss的含义

   -Xms:堆的初始值

   -Xmx:堆能达到的最大值

   -Xss:规定了每个线程虚拟机栈的大小

 

6.GC垃圾回收算法

6.1复制算法发生在新生代,幸存者区垃圾回收时使用,适用于存活率较低对象。Minor GC

6.2老年代的回收,标记整理算法。适用于存活率较高的对象回收;Full GC

注:System.gc() 会回收老年代的垃圾,但不会立即回收。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值