![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
小熊影子
这个作者很懒,什么都没留下…
展开
-
Java内存区域
Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域。 从线程的角度来看,运行时的数据区域主要分为两部分,第一部分是线程隔离的数据区,第二部分是线程共享的数据区。 线程隔离的数据区分为三部分,下来我们一一介绍: 1.程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器,每条线程都有一个独立的程序计数器。 字节码解释器...原创 2018-09-04 09:49:03 · 58 阅读 · 0 评论 -
对象的创建过程
在虚拟中,对象的创建过程是怎么样的?大体上来说分为三步: 1.类加载过程 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经执行过相应的类加载过程。 类加载过程大致有三个过程:加载、解析和初始化。 2.为对象分配内存 分配方式有两种: 1.指针碰撞 这里需要Java堆的内存绝对规整,所有用过的内存都放...原创 2018-09-05 10:07:36 · 696 阅读 · 0 评论 -
一个Java对象生存还是死亡?
第一个问题,如何判断一个对象已死? 一个对象已死,从程序运行的角度来看,当一个对象没有用的时候,这个对象就已经死了,那么,如何判断一个对象没有用了? 常用的方法是这样的:给对象添加一个引用计数器,每当有一个地方引用它时,计数器的值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不再使用的。这就是引用计数算法。 引用计数算法是一个简单有效的算法,但是在Java中却没有使用这种...原创 2018-09-06 10:46:45 · 193 阅读 · 0 评论 -
Java内存分配策略
上一篇博文讲述了Java内存回收策略,这一次我们讲述一下Java内存分配策略。 这里我们先假设一个模型,我们假设:新生代总内存是10MB,其中Eden区与Survivor区的内存占比是8:1,也就是Eden区是8MB,而Survivor区是1MB;老年代总内存也设为10MB; 分配原则是: 1.优先分配在Eden区 也就是说大多数情况下,对象在Eden区中分配。 这里有一个问题是,如果我...原创 2018-09-12 10:03:24 · 612 阅读 · 0 评论 -
垃圾收集算法
1.标记-清除算法 最基础的收集算法是“标记-清除”算法,如同它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收说有被标记的对象。 它的主要不足有两个: 一个是效率问题,标记清除两个过程的效率都不高; 另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大的对象时,无法找到足够的连续...原创 2018-09-10 09:44:25 · 85 阅读 · 0 评论