JVM知识
qq_33640789
这个作者很懒,什么都没留下…
展开
-
JVM分带回收机制以及垃圾回收算法
JVM垃圾回收主要是回收堆上的内存,新生代使用的是复制回收算法,老年代使用标记清除(CMS)或标记整理算法。 一:垃圾回收算法 1:复制算法 复制算法是新生代使用的算法,主要的实现原理是将内存分为两块区域,一块用于存放数据另一块用于将发生垃圾回收后的存活对象整体复制。复制算法回收垃圾后的内存空间是没有内存碎片的。目前新生代使用的是Appel回收方式,大家都知道新生代的对象很多都是朝生夕死的根本活不到下一次GC,所有现在是将新生代分成了3个区域Eden区,From区,To区且按照8:1:1分配大小。新原创 2020-07-28 15:05:02 · 534 阅读 · 0 评论 -
JVM中的对象及引用
一:JVM中对象创建的过程 1:类加载(双亲委派加载class文件) 2:检查加载,当new一个对象时先检查对象对应的class文件是否已经被加载,如果没有加载则返回到第一步类加载。 3:分配内存:划分内存一般有指针碰撞和空闲列表 指针碰撞用于连续整齐的内存区域,当分配内存后指针后移。 空闲列表用于断断续续的内存空间(CMS垃圾回收后),内存列表会标记哪些内存区域已使用哪些未使用。 分配内存时为了避免多线程造成的影响,一般会选用CAS机制或者本地线程分配缓冲(TLAB)。 CAS机制(Comp原创 2020-07-23 18:52:34 · 359 阅读 · 1 评论 -
JVM内存区域<二>
一:深入理解运行时数据区 有如下代码: JVM执行的具体流程如下: 1:JVM申请内存:JVM通过配置参数或者默认参数向操作系统申请内存,根据内存大小找到内存分配表,将内存段的起始和结束地址返回给JVM。 2:JVM通过配置初始化栈,堆和方法区的大小。 3:将class文件以及文件里面定义的常量和静态变量加载到方法区。 4:上面的代码new了对象,此时会在堆里面创建对象并属性赋值,栈里面会有一个地址指向堆上创建的对象。 二:对空间的划分 堆空间主要分为新生代和老年代。新生代又分原创 2020-07-23 01:59:45 · 134 阅读 · 0 评论 -
JVM内存区域<一>
一:运行时数据区域 java虚拟机运行时会将所管理的内存划分为几个不同的区域。 在JVM中,JVM的内存区域主要包括:虚拟机栈,本地方法栈,程序计数器,堆,方法区。其中虚拟机栈,本地方法栈,程序计数器是线程私有的。线程私有的每个线程会开辟单独的区域,线程共享的是所有的线程共同使用一份内存区域。 还有一个区域是直接内存,它不属于运行时数据区域,但是它还是会被频繁使用。可以理解为没有被虚拟机虚拟化的其他内存(例如操作系统有16G内存,虚拟化了4G,另外的12G就是直接内存,JVM可以通过一些工具使用原创 2020-07-17 17:14:15 · 565 阅读 · 0 评论 -
JVM基础知识
一:JVM简介: JVM全程是Java Virtual Machine,也就是我们耳熟能详的Java虚拟机。它能够识别.class文件,并且能够解析他的指令,最终调用操作系统上的函数,完成我们想要额操作。原创 2020-07-17 11:34:13 · 148 阅读 · 0 评论