
JVM
关于JVN类型
L_J_X03
这个作者很懒,什么都没留下…
展开
-
JVM的常用基础参数
1.-Xms初始大小内存:默认为物理内存的1/64-Xms:等价于-XX:InitialHeapSize2.-Xmx最大分配内存:默认为物理内存的1/4-Xms:等价于-XX:MaxHeapSize3.-Xss设置单个线程栈的大小,一般默认为512k~1024k-Xss:等价于 -XX:ThreadStackSize查看命令:jinfo -flag ThreadStackSize 23876显示效果:0表示默认值-XX:ThreadStackSize=0修改相关的参数,需原创 2021-05-10 15:37:52 · 135 阅读 · 0 评论 -
JVM的参数类型(XX类型为重点)和查看JVM的默认值
JVM分为三种参数类型一:标配类型-version-helpjava -showversion二:X类型-Xint 解释执行-Xcomp 第一次使用就编译成本地代码-Xmixed 混合模式执行命令java -Xint -versionjava -Xcomp -versionjava -Xmined -version三:XX类型(重点)1.Boolean类型公式: -XX:+ 或者 - 某个属性+表示开启-表示关闭Case一:是否打印GC的收集细节二:是否使用串原创 2021-05-10 13:37:12 · 259 阅读 · 0 评论 -
对GCRoots的理解
java中的垃圾:指的是在内存中不在被使用的空间判断对象是否可以被回收:1.引用计数法每当有一个地方引用,计数值加1有一个地方引用失效,计数值减12.枚举根节点做可达性分析(根搜索路径)可以作为GCRoots对象的东西...原创 2021-05-09 14:50:44 · 161 阅读 · 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 · 215 阅读 · 0 评论 -
CAS(运用自旋锁)
CAS : 比较并交换(compareAndSet)compareAndSet(期望值,更新值) :期望值与主物理内存比较,如果相同,则更新值为什么用CAS不用synchronized原创 2021-04-14 17:45:16 · 167 阅读 · 0 评论 -
ABA问题
AtomicInteger的ABA问题在多个线程进行访问的时候,读取相同的数据,但是在某个线程修改完之后,再把它修改成原来的值,另外的线程读取的修改之后的数据,但是该数据其实已经别修改。CAS只管开始读取的数据与最后读取的数据一致,不管中间过程的变化解决ABA问题:在操作上面加上版本号 AtomicStampedReference原子引用 AtomicReference<泛型>...原创 2021-04-29 16:39:37 · 111 阅读 · 0 评论