JVM简介说明

java-教程王 Java教程 发布时间:2021-10-19 10:03:16 阅读数:5624 1
下文笔者讲述JVM的简介说明,如下所示:

JVM简介

JVM的功能是Java应用程序的运行环境,它是Java虚拟机,
JVM用于运行java的字节码文件,JVM可以将字节码转换为硬件,操作系统指令,
JVM用于同操作系统内层交互
通俗的讲:JVM是一个Java语言的操作系统,用于管理Java应用程序的运行环境
Java一次编写,所有平台使用,主要是基于JVM虚拟机,
JVM拥有代码运行,垃圾回收,GC压缩,可扩展

动态编译器

动态编译器的功能:将一种语言动态的转换为另一种语言,动态的编译器在编译的过程中,实现更好的指令序列,把一系列的指令替换成更有效的,并消除多余的操作
随着时间的增长,你将收集更多的代码生成数据,做更多更好的编译决定;整个过程就是我们通常称为的代码优化和重编译
动态编译会根据行为进行动态调整的优势,或随着应用装载次数的增加从而进行新的优化
动态编译器请求外部数据结构,线程资源,CPU周期分析和优化
越深层次的优化,你将需要越多的资源
在大多数环境中,顶层对执行性能的提升帮助非常小——比你纯粹的解释要快5到10倍的性能

分配会导致垃圾回收

每一个线程都是基于每个“Java进程分配内存地址空间” 完成内存分配,叫Java堆,或简称堆
并行应用设计同样迫使JVM保证在同一时间,多线程不会分配同一个地址空间
你可以通过在整个分配空间中放把锁来控制
但这种技术(堆锁)很消耗性能,持有或排队线程会影响资源利用和应用优化的性能
多核系统好的一面是,它们创造了一个需求,为各种各样的新的方法在资源分配的同时去阻止单线程的瓶颈和序列化

碎片

使用TLABs捕获异常,是将堆碎片化来降低内存效率
当一个应用在要分配对象时,此时不能增加或不能完全分配一个TLAB空间
这将会有空间太小而不能生成新对象的风险。这样的空闲空间被当做“碎片”。如果应用程序一直保持对象的引用,然后再用剩下的空间分配,最后这些空间会在很长一段时间内空闲
碎片:堆中有很多分散的不可用的小内存,此时我们将这些小内存称之为“碎片”
随着应用的运行,碎片数量会增加
碎片会导致系统性能下降
系统无可用内存,则无法为应用程序分配足够的线程个对象,此是就会触发out-of-memory异常

GC琐事

以前垃圾收集器拥有多个老年代,当超过两个老年代的时候会导致开销超过价值
此时采用一种优化分配减少碎片的方法,就是创造所谓的新生代
这是一个专门用于分配新对象的专用堆空间
剩余的堆会成为所谓的老年代
老年代是用来分配长时间存在的对象的,被假定会存在很长时间的对象包括不被垃圾收集的对象或者大对象

垃圾回收和应用性能

垃圾回收是JVM的垃圾回收器去释放没有引用的被占据的堆内存
当第一次触发垃圾收集时,所有的对象引用还被保存着,被以前的引用占据的空间被释放或重新分配。当所有可回收的内存被收集后,空间等待被抓取和再次分配给新对象

GC算法

JVM中有许多不同的垃圾回收算法
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaCourse/202110/1496.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者