JVM
皮皮go
无问西东
展开
-
JVM内存分配与回收策略
JVM的自动内存管理主要解决两个问题: 给对象分配内存 回收给对象分配的内存 内存分配规则 新生代GC(Minor GC):发生在新生代的垃圾收集动作,Minor GC动作非常频繁,回收速度较快 老年代GC(Major GC/Full GC):发生在老年代的GC,速度比Minor GC慢10倍以上 1.对象优先在Eden分配 当Eden区没有足够内存时,虚拟机将会发起一次M...原创 2019-07-14 23:46:58 · 122 阅读 · 0 评论 -
对象存活与引用
垃圾收集器在对对象进行回收前,第一件事就是要确定对象是否存活 1.引用计数法 给对象添加一个引用计数器,每当有一个地方引用它时,计数器就增加1;引用失效时,计数器就减1。 任何时刻计数器为0的对象就是不可能被使用的 引用计数法实现简单,判定效率较高,但无法解决对象之间的相互引用问题,JVM并没有采用这种方法。 代码测试 package basicKno...原创 2019-07-15 19:50:37 · 113 阅读 · 0 评论 -
垃圾收集算法与垃圾收集器
垃圾收集算法与垃圾收集器原创 2019-07-15 21:51:52 · 115 阅读 · 0 评论 -
JVM对象
1.对象的创建 通过new创建对象时,首先检查这个符号引用所代表的类是否已经被加载、解析和初始化过。如果没有,执行相应的类加载过程。 2.内存分配 对象所需要的内存空间在类加载完成后便可完全确定 2.1分配方法 1.指针碰撞;2.空闲列表 2.2选择依据 选择哪种分配方式由Java堆是否规整决定,而Java堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能而决定。...原创 2019-07-11 17:09:32 · 98 阅读 · 0 评论 -
JVM的类加载机制以及双亲委派模型
1 类与类加载器 类加载:通过一个类的全限定名来获取描述此类的二进制字节流 对于任意一个类,都需要由加载它的类加载器和这个类本身一同确定其在Java虚拟机中的唯一性。换句话说,如果两个类来源于通过一个class文件,但是由不同的类加载器加载,那么这就是两个不同的类 1.1 代码验证 package basicKnowledge.jvm.classload; import su...原创 2019-08-13 16:39:58 · 104 阅读 · 0 评论 -
JVM的类加载过程
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行验证、解析和初始化等,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制原创 2019-09-02 21:17:23 · 74 阅读 · 0 评论 -
JVM中的各种锁及其优化
1 自旋锁与自适应自旋 自旋锁:如果两个或以上的线程能够并行执行,我们可以让请求锁的线程稍等一下,但不放弃CPU的执行时间,看看持有锁的线程是否很快释放锁。为了让线程等待,我们只需让线程执行一个忙循环(自旋),这项技术就是所谓的自旋锁。 开启参数:-XX:+UseSpinning 自旋次数:-XX:PreBlockSpin 自旋锁对处理器有要求,因为它需要处理器能够支持多线程并行(注...原创 2019-09-05 21:41:27 · 636 阅读 · 0 评论 -
公平锁与非公平锁及其测试
公平锁与非公平锁 公平锁:获取锁的先后顺序与请求锁的先后顺序保持一致,具有FIFO特点。 非公平锁:反之则为非公平锁。 什么是可重入? 同一个线程重复多次获取同一把锁,释放的时候也需要释放多次。 Java中锁的特点 synchronized:可重入,非公平(不可设置)。锁的是Object对象 ReentrantLock:可重入,公平或非公平(可设置)。通过获取...原创 2019-10-08 16:28:54 · 370 阅读 · 0 评论