JVM原理及调优

JVM(Java Virtual Machine),Java虚拟机,是一种用于计算设备的规范,虚构出来的计算机。JVM是实现Java语言平台无关性的关键,相当于充当了一个翻译的角色,可将一种语言翻译成多种平台指令。Java语言生成在JVM上运行的字节码,JVM在执行字节码时,把字节码解释成具体平台的机器指令执行。即完成了“一次编译,到处运行” 。

JVM内存组成及垃圾回收机制

内存组成:由堆、栈、本地方法栈和方法区等部分组成。

堆:通过new创建的对象的内存分配。堆划分为新生代和旧生代。

栈:每个线程执行每个方法都会申请一个栈帧,包括局部变量区和操作数栈,用于存放方法调用过程中的临时变量、参数和中间结果。

本地方法栈:用于支持native方法的执行,存储每个native方法调用的状态。

方法区:存放要加载的类信息、静态变量、final类型常量、属性和方法信息。持久代存放方法区。

垃圾回收策略:

1、引用计数:记录对象的引用数,回收计数为0的对象。无法处理循环引用。

2、标记-清除:分为两个阶段,第一阶段从引用根节点开始标记所有被引用的对象;第二阶段遍历整个堆,清除未标记的对象。此算法会暂停整个应用,且会出现“内存碎片”问题。

3、复制:将内存空间划分为两个相等的区域,每次使用其中一个,垃圾回收时,将当前使用区域内正在使用的对象复制到另一个区域内。此算法需要两倍内存空间。

4、标记-整理:结合了标记-清除和复制的优点。同样分为两个阶段,第一阶段也是标记对象;第二阶段在清除未标记的对象时,并将存活对象“压缩”到堆得其中一块,按顺序排放。

在执行机制上,JVM提供了串行GC、并行回收GC和并行GC。

JVM内存调优:

JDK提供的内存查看工具,比如JConsole和Java VisualVM。

调优目的是减少GC的频率和Full GC的次数。

调优手段主要通过控制堆内存的各个部分的比例和GC策略来实现

JVM提供两种较为简单的GC策略的设置方式

1、吞吐量优先

2、暂停时间优先

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值