jvm-java虚拟机
文章平均质量分 91
zpv2jdfc
这个作者很懒,什么都没留下…
展开
-
java线程安全的实现
比如hotspot,每个java线程直接映射到一个操作系统原生线程,中间没有额外的间接结构,线程的调度全权交给操作系统去处理(但是虚拟机会给线程设置优先级)。java采用了CAS操作,但是JDK8只有Java类库才可以使用CAS,用户程序是不能用的,我们来看一下AtomicInteger是怎么保证线程安全的。保证线程的安全需要可见性、有序性、原子性,这段代码中通过volatile保证了可见性和有序性,通过CAS保证了原子性。java线程的实现不受虚拟机规范的约束,主流的java虚拟机都采用了。原创 2022-10-04 09:51:27 · 388 阅读 · 0 评论 -
volatile关键字、java内存模型
java内存模型和cpu内存模型类似。java线程并不会直接读写主内存中存放的共享变量,而是拷贝一个副本在工作内存中,也由此引出了变量可见性的问题(对应cpu缓存不一致问题)volatile实现了变量的可见性和操作的有序性。被volatile关键字修饰的变量,在工作内存中被修改后会立刻写回主内存,并且之后的指令不会被重排序到赋值操作之前。原创 2022-09-28 11:25:01 · 144 阅读 · 0 评论 -
jvm垃圾收集算法
主流虚拟机的垃圾收集器都遵循了分代收集的策略,一般至少把堆分为两个区域:新生代、老年代。新生代经常会有大量对象死去,每次回收后仅留下一小部分,而老年代正好相反。两个区域适合用不同的算法收集垃圾。原创 2022-09-21 10:14:47 · 327 阅读 · 0 评论 -
如何判断对象已死&何时回收对象?
在垃圾回收之前,首先要判断哪些对象还活着、哪些对象已经死去(不可能再通过任何途径使用)原创 2022-09-15 16:28:59 · 183 阅读 · 0 评论 -
jvm之方法调用过程
方法调用阶段的任务是确定要调用的方法的版本。class文件的编译与其他程序语言不同,它不包含连接步骤。class文件中存储的只是方法的符号引用。需要在类加载阶段(解析)或者运行时(委派)才能确定方法的直接引用。原创 2022-09-12 12:11:26 · 528 阅读 · 0 评论 -
java虚拟机-双亲委派机制
各种类加载器之间的层次关系被称为类加载器的“双亲委派模型(Parents DelegationModel)”。双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。不过这里类加载器之间的父子关系一般不是以继承(Inheritance)的关系来实现的,而是通常使用组合(Composition)关系来复用父加载器的代码。原创 2022-09-09 11:24:14 · 335 阅读 · 0 评论 -
HotSpot中对象的创建、内存布局、访问定位
HotSpot是最常用的虚拟机,我们来看一下HotSpot中对象创建、布局、访问的过程。原创 2022-08-26 10:27:50 · 298 阅读 · 0 评论 -
java虚拟机jvm之类加载机制
java类的加载过程、java虚拟机、jvm、类型的加载、连接和初始化过程、hotspot虚拟机原创 2022-08-23 09:16:53 · 245 阅读 · 0 评论 -
jvm--java字节码文件的内容
java字节码文件,java class文件内容,Java虚拟机,jvm,字节码文件原创 2022-08-16 12:15:23 · 291 阅读 · 0 评论