随笔分类 -  Java后端:JVM

每当发生一次垃圾收集,所有用户线程都必须跑到最近的一个安全点然后挂起线程来等待垃圾回收
摘要:每当发生一次垃圾收集,所有用户线程(严格来说,不包括正在执行native代码的用户线程,因为native代码一般不会改变Java对象的引用关系,所以没有必要挂起它们来等待垃圾回收。)都必须跑到最近的一个安全点然后挂起线程来等待垃圾回收。 使用 Xmn参数手工调整新生代的大小 阅读全文

posted @ 2020-03-16 17:40 cag2050 阅读(250) 评论(0) 推荐(0) 编辑

你了解dt.jar吗
摘要:http://www.blogjava.net/landon/archive/2011/05/15/350285.html 阅读全文

posted @ 2020-03-08 12:30 cag2050 阅读(268) 评论(0) 推荐(0) 编辑

javap,是 java printer 的缩写,是 JDK 自带的 Java 字节码分析工具
摘要:javap,是 java printer 的缩写,是 JDK 自带的 Java 字节码分析工具 阅读全文

posted @ 2020-03-08 12:27 cag2050 阅读(452) 评论(0) 推荐(0) 编辑

这段代码的返回值在出现异常和不出现异常的情况下,分别应该是多少?
摘要:问:这段代码的返回值在出现异常和不出现异常的情况下,分别应该是多少?《深入理解Java虚拟机(第3版)》代码清单6 5 答:从Java代码的语义上讲,这三条执行路径分别为: 1. 如果try语句块中出现属于Exception或其子类的异常,转到catch语句块处理; 2. 如果try语句块中出现不属 阅读全文

posted @ 2020-03-06 17:20 cag2050 阅读(176) 评论(0) 推荐(0) 编辑

strictfp 关键字修饰方法,即 strict float point (精确浮点)
摘要:strictfp 关键字修饰方法,即 strict float point (精确浮点) 阅读全文

posted @ 2020-03-06 15:26 cag2050 阅读(291) 评论(0) 推荐(0) 编辑

transient 修饰符修饰属性:不需要序列化的属性
摘要:transient 修饰符修饰属性:不需要序列化的属性 阅读全文

posted @ 2020-03-06 14:54 cag2050 阅读(287) 评论(0) 推荐(0) 编辑

Java 中的 CAS 操作
摘要:在JDK 5之后,Java类库中才开始使用CAS操作,该操作由sun.misc.Unsafe类里面的compareAndSwapInt()和compareAndSwapLong()等几个方法包装提供。HotSpot虚拟机在内部对这些方法做了特殊处理,即时编译出来的结果就是一条平台相关的处理器CAS指 阅读全文

posted @ 2020-03-05 15:56 cag2050 阅读(956) 评论(0) 推荐(0) 编辑

线程安全的实现方法:互斥同步、非阻塞同步、无同步方案
摘要:互斥同步(也称为阻塞同步,属于一种悲观的并发策略) 互斥同步,可以用:synchronized、J.U.C包中的锁 非阻塞同步(基于冲突检测的乐观并发策略,使用了硬件指令集提供的CAS功能) 非阻塞同步,可以用:J.U.C包里面的整数原子类 无同步方案 无同步方案,可以用:可重入代码(类似于纯函数) 阅读全文

posted @ 2020-03-05 15:36 cag2050 阅读(611) 评论(0) 推荐(0) 编辑

J.U.C包的意义
摘要:从上面的介绍中我们可以看到synchronized的局限性,除了synchronized关键字以外,自JDK 5起(实现了JSR166[插图]),Java类库中新提供了java.util.concurrent包(下文称J.U.C包),其中的java.util.concurrent.locks.Loc 阅读全文

posted @ 2020-03-05 15:14 cag2050 阅读(132) 评论(0) 推荐(0) 编辑

synchronized 原理
摘要:在Java里面,最基本的互斥同步手段就是synchronized关键字,这是一种块结构(Block Structured)的同步语法。synchronized关键字经过Javac编译之后,会在同步块的前后分别形成monitorenter和monitorexit这两个字节码指令。这两个字节码指令都需要 阅读全文

posted @ 2020-03-05 15:08 cag2050 阅读(184) 评论(0) 推荐(0) 编辑

什么场景下,使用 final、volatile、Atomic原子类、synchronized、J.U.C 包中的锁?
摘要:使用原则 满足使用条件的情况下,按先后顺序优先使用:final、volatile、Atomic原子类、synchronized、J.U.C 包中的锁 使用 final 的场景 final关键字的可见性是指:被final修饰的字段在构造器中一旦被初始化完成,并且构造器没有把“this”的引用传递出去( 阅读全文

posted @ 2020-03-05 11:33 cag2050 阅读(338) 评论(0) 推荐(0) 编辑

volatile 原理
摘要:可见性 当一个变量定义为volatile之后,它将具备两种特性,第一是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 volatile变量在各个线程的工作内存中不存在一致性问题(在各个线程的工作内存中,volatile变量也可以 阅读全文

posted @ 2020-03-04 17:53 cag2050 阅读(165) 评论(0) 推荐(0) 编辑

Java 内存模型,在并发过程中如何处理原子性、可见性和有序性这3个特性?
摘要:特性 | 概念 | 实现此特性的解决方案 | | 原子性(Atomicity)| 由Java内存模型来直接保证的原子性变量操作包括read、load、assign、use、store和write,我们大致可以认为基本数据类型的访问读写是具备原子性的(例外就是long和double的非原子性协定,读者 阅读全文

posted @ 2020-03-04 14:22 cag2050 阅读(253) 评论(0) 推荐(0) 编辑

ThreadLocal:一个变量要被某个线程独享
摘要:Java语言中,如果一个变量要被多线程访问,可以使用volatile关键字声明它为“易变的”; 如果一个变量要被某个线程独享,Java中就没有类似C++中__declspec(thread)这样的关键字,不过还是可以通过java.lang.ThreadLocal类来实现线程本地存储的功能。每一个线程 阅读全文

posted @ 2020-03-04 13:21 cag2050 阅读(558) 评论(0) 推荐(0) 编辑

使用场景:final、volatile、ThreadLocal、synchronized、Atomic(自己整理)
摘要:锁 | 原理 | 使用场景 | | final | 实现了Java内存模型的可见性 | 一个变量要被多个线程访问 volatile | 实现了Java内存模型的可见性、有序性 | 一个变量要被多个线程访问 ThreadLocal | 如果一个变量要被某个线程独享,Java中就没有类似C++中__de 阅读全文

posted @ 2020-03-04 11:03 cag2050 阅读(299) 评论(0) 推荐(0) 编辑

锁的粒度:ThreadLocal、volatile、Atomic 和 Synchronized
摘要:出处:https://blog.csdn.net/hhx0626/article/details/53997757 阅读全文

posted @ 2020-03-03 14:13 cag2050 阅读(162) 评论(0) 推荐(0) 编辑

可作为 GC Roots 的对象,详见书籍《深入理解Java虚拟机(第3版)》第70页
摘要:可作为 GC Roots 的对象,详见书籍《深入理解Java虚拟机(第3版)》第70页 阅读全文

posted @ 2020-03-01 23:40 cag2050 阅读(154) 评论(0) 推荐(0) 编辑

Partial GC、Minor GC/Young GC、Major GC/Old GC、Mixed GC、Full GC 的含义
摘要:部分收集(Partial GC):指目标不是完整收集整个Java堆的垃圾收集,其中又分为: 1. 新生代收集(Minor GC/Young GC):指目标只是新生代的垃圾收集。 2. 老年代收集(Major GC/Old GC):指目标只是老年代的垃圾收集。目前只有CMS收集器会有单独收集老年代的行 阅读全文

posted @ 2020-03-01 21:12 cag2050 阅读(1016) 评论(0) 推荐(0) 编辑

macOS 系统下,JDK 8、JDK 9 用云盘下载(官方下载太慢,csdn需要积分/C币)
摘要:macOS 系统下,JDK 8、JDK 9 用云盘下载,链接:https://pan.baidu.com/s/1Oa7xIKLeSAZsITsx4xJfkw 密码:nrdq 官方下载地址:https://www.oracle.com/java/technologies/javase/javase9 阅读全文

posted @ 2020-02-29 17:04 cag2050 阅读(1835) 评论(0) 推荐(0) 编辑

Java 中的各种锁(自己总结 )
摘要:锁的种类 | 概念 | 实现 | | 悲观锁(阻塞同步) | | synchronized、 乐观锁(非阻塞同步) | 目前,在Java中应用最广泛的非阻塞同步就是CAS | CAS包装类:AtomicXXX、 公平锁 | 公平锁是指多个线程在等待同一个锁时,必须按照申请锁的时间顺序来依次获得锁;而 阅读全文

posted @ 2020-02-24 17:32 cag2050 阅读(426) 评论(0) 推荐(0) 编辑

导航

点击右上角即可分享
微信分享提示