JVM
关于JVN类型
L_J_X03
这个作者很懒,什么都没留下…
展开
-
JVM的常用基础参数
1.-Xms 初始大小内存:默认为物理内存的1/64 -Xms:等价于-XX:InitialHeapSize 2.-Xmx 最大分配内存:默认为物理内存的1/4 -Xms:等价于-XX:MaxHeapSize 3.-Xss 设置单个线程栈的大小,一般默认为512k~1024k -Xss:等价于 -XX:ThreadStackSize 查看命令: jinfo -flag ThreadStackSize 23876 显示效果:0表示默认值 -XX:ThreadStackSize=0 修改相关的参数,需原创 2021-05-10 15:37:52 · 106 阅读 · 0 评论 -
JVM的参数类型(XX类型为重点)和查看JVM的默认值
JVM分为三种参数类型 一:标配类型 -version -help java -showversion 二:X类型 -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式 执行命令 java -Xint -version java -Xcomp -version java -Xmined -version 三:XX类型(重点) 1.Boolean类型 公式: -XX:+ 或者 - 某个属性 +表示开启 -表示关闭 Case 一:是否打印GC的收集细节 二:是否使用串原创 2021-05-10 13:37:12 · 196 阅读 · 0 评论 -
对GCRoots的理解
java中的垃圾:指的是在内存中不在被使用的空间 判断对象是否可以被回收: 1.引用计数法 每当有一个地方引用,计数值加1 有一个地方引用失效,计数值减1 2.枚举根节点做可达性分析(根搜索路径) 可以作为GCRoots对象的东西 ...原创 2021-05-09 14:50:44 · 112 阅读 · 0 评论 -
结合JMM讲解Volatile三大特性
JUC 表示java.util.concurrent下面的三个包 计算机在执行程序是,为了提高性能,编译器和处理器常常对指令进行重排 在单线程的环境,最终执行结果和代码顺序的结果是一致的 多线程环境中线程交替执行,由于编译器优化重排的存在,两个线程中使用的变量能否保持一致性是无法确定,结果无法预测。 但是,处理器在进行重排序时,必须要考虑指令之间的数据依赖,例如:int i= 5 ; int y = x+5 ;指令重排不会把int y = x+5放在前面 volatile是轻量级的同步机制,有三种特性 1.原创 2021-04-14 15:28:04 · 155 阅读 · 0 评论 -
CAS(运用自旋锁)
CAS : 比较并交换(compareAndSet) compareAndSet(期望值,更新值) :期望值与主物理内存比较,如果相同,则更新值 为什么用CAS不用synchronized原创 2021-04-14 17:45:16 · 129 阅读 · 0 评论 -
ABA问题
AtomicInteger的ABA问题 在多个线程进行访问的时候,读取相同的数据,但是在某个线程修改完之后,再把它修改成原来的值,另外的线程读取的修改之后的数据,但是该数据其实已经别修改。 CAS只管开始读取的数据与最后读取的数据一致,不管中间过程的变化 解决ABA问题:在操作上面加上版本号 AtomicStampedReference 原子引用 AtomicReference<泛型> ...原创 2021-04-29 16:39:37 · 68 阅读 · 0 评论