Java虚拟机
文章平均质量分 70
时空恋旅人
坚持不懈的学习态度和坚韧的人生品质
展开
-
《深入理解Java虚拟机》读书笔记--第十三章 线程安全与锁优化
CAS指令需要三个操作数,分别是内存位置V,旧的预期值A,新的预期值B,当线程要修改资源对象的值的时候,他会先读取当前资源对象的值存在A中,此时该线程如果得到时间片他就继续修改资源对象的值,修改之前会先根据资源对象的内存地址V找到资源对象的值,然后做一个对比,如果资源对象的值等于旧值A,那么将其更新为新值B。另外一个线程比较失败后会进入一个自旋的状态。CAS为什么要原子性?如何保证CAS的原子性?当然CAS比较交换的这个动作需要同步的才行,那怎么保证同步呢?加锁吗?当然不是CAS是无锁编程,加锁。.....原创 2022-07-20 20:35:10 · 354 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记--第七章 类加载机制
除了顶层的类加载器,其他的类加载器都有自己的父亲加载器,这些加载器的父子关系不是以继承实现的,而是通过组合实现的。原创 2022-07-15 14:29:37 · 373 阅读 · 0 评论 -
《深入理解Java虚拟机》读书笔记--第一部分走进java
问题抛出:JDK:总共分为三部分,java程序设计语言,Java虚拟机,Java API类库,JDK是用于支持Java程序开发的最小环境。JRE:两个部分,Java SE API子集,Java虚拟机,Java是支持Jave程序运行的标准环境。 Sun Classic, Sun HotSpot, BEA JRockit HotSpot在JIT编译上有许多优秀的理念和实际效果,他的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码。然后通知JIT编译器以方法为单位进行编译,如果一个方法被频繁调原创 2022-07-04 20:11:06 · 140 阅读 · 0 评论 -
JVM学习之路04--(常用JVM参数,内存分析)
1.基于JDK命令行工具的监控1.1JVM的参数类型 1.1.1标准参数(相对来说比较稳定的参数) 1.1.2 X参数(有可能会变) 1.1.3 XX参数 用得最多最重要 主要分为两类 bool类型 表示启用或者禁用,例如: 非bool类型,K,V的形式,比如: 注意:-Xms 和-Xmx也是XX类型参数 更多命令访问:https://docs.oracle...原创 2022-01-17 23:02:46 · 379 阅读 · 1 评论 -
JVM与调优
1.JVM学习之路01--(jvm内存模型)2.JVM学习之路02--(堆内存的垃圾回收算法)3.JVM学习之路03--(JVM案例分析)4.原创 2022-01-17 22:55:39 · 293 阅读 · 0 评论 -
JVM学习之路02--(堆内存的垃圾回收算法)
1.堆内存 首先产生的新对象都放在新生代 Eden Space,GC会判断找出有价值的对象让他到From Space区,这个过程会会重复,默认15次。如果15次过后这个对象还活着就放到老年代里面。Survivor分了两个块,ToSpace这块永远不会用,这是因为垃圾回收考虑到算法的问题。问题来了,GC是如何知道这个对象是否是垃圾?当然是通过算法来算的。最...原创 2018-12-22 15:20:12 · 667 阅读 · 0 评论 -
JVM学习之路01--(jvm内存模型)
1.JVM内存模型(方法区,堆区,栈区,程序计算器,本地方法区) 1.方法区: 方法区:也叫永久区,方法区(Method Area)与堆(Java Heap)一样,是各个线程共享的内存区域,它用于存储虚拟机加载的类信息(class),常量,静态变量,即时编译器编译后的代码等数据。虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是她却有一个别名叫做非堆(Non-H...原创 2018-12-22 13:40:39 · 179 阅读 · 0 评论 -
JVM学习之路03--(JVM案例分析)
1.了解了监视工具以后就来分析一些小案例 先来体验一下堆内存溢出的感觉。对内存默认是分很多的,很难溢出的,所以我们要设置一下起始堆内存分配的大小。设置最大堆内存为50M,初始堆内存为50M,垃圾回收器使用单线程垃圾回收器。 package com.wx.jvm;import java.util.ArrayList;import java.util.List;public...原创 2018-12-23 11:54:09 · 165 阅读 · 0 评论