![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM虚拟机
文章平均质量分 75
皮先生k
这个作者很懒,什么都没留下…
展开
-
Java——JVM虚拟机(四)
JVM中有哪些常见的垃圾回收器?各自的特点是什么? Java发展至今,已经推出了好几代的垃圾回收器,包括Serial、ParNew、Parallel、CMS、G1以及Java11中最新的ZGC,每一代的GC都是堆上一代的改进和完善。 新生代使用的垃圾回收器主要有: Serial串行收集器 (1)单线程收集器,在单核CPU架构下,JDK3之前新生代的回收器的唯一选择。 (2)它与应用线程的执行是串行的,也即是说,执行应用线程的时候,不会执行GC,执行GC的时候不会执行应用 线程。 (3)在CPU单核架构下原创 2021-10-23 13:43:19 · 68 阅读 · 0 评论 -
Java——JVM虚拟机(三)
对于堆内存,虚拟机如何进行分代管理? 分代:JVM根据对象在内存中存活时间的长短,把堆内存分为新生代和老年代 新生代:由Eden区+(S0+S1) Survivor区组成 大部分情况下,对象优先分配到Eden区,如果对象实在太大,新生代整个都放不下的话,可直接放在老年代区 当Eden区满时,JVM会触发一次Minor GC(回收速度快) Minor GC (1)当Eden满了之后,进行Minor GC,将需要保存的数据复制到S0中 (2)当下一次Eden满了之后,进行Minor GC,将原来S0存原创 2021-10-23 12:08:31 · 79 阅读 · 0 评论 -
Java——JVM虚拟机(二)
1、JDK8后的虚拟机内存包含哪几个部分?做了哪些调整和改进? JDK8之前的架构 堆 堆是JVM内存管理的最大一块区域,主要目的是存放对象的实例 所有新创建的对象实例和数组都会在堆上为其分配内存空间 线程共享 是垃圾收集器的主要管理区域,堆内存中可以存在物理上不连续的空间,只要逻辑上是连续的即可 如果在堆中没有内存完成实例分配,将会抛出OutOfMemoryError 栈 Java栈也称为虚拟机栈,是线程私有的 Java栈中存放的是一个个栈帧,没有栈帧对应一个被调用的方法,在栈帧中包括: ·原创 2021-10-23 10:42:28 · 57 阅读 · 0 评论 -
Java——JVM虚拟机(一)
1、Java代码程序是如何运行起来的? jar包:将.class为后缀的Java程序代码打包为jar包,在服务器后台通过java -jar的命令运行程序; war包:将程序代码打包为war包,将其部署在例如Tomcat 的服务器上进行运行。 (1)我们的Java程序是以.java为后缀的文件,会通过编译器将代码编译为.class后缀的字节码文件,以供JVM识别和运行; (2)Java的平台无关性,实现的基础就是虚拟机JVM和字节码存储格式。不同的操作系统可能对应不同版本的JVM,这些不同版本的JVM都可原创 2021-10-23 09:45:04 · 87 阅读 · 0 评论