JVM原理与多线程
文章平均质量分 87
JVM底层原理实现剖析与Java多线程编程
Aruba233
人生就是不断的超越自我
而超越自我需要不断的坚持
展开
-
JVM--内存模型
安卓高级工程师想要做性能优化、NDK、设计架构时的健全性等工作时,必须是对JVM有一定的了解。技术的路越往上走,就越需要对底层的理解。计算机原理、c/c++语言、JVM原理、数据结构与算法等知识缺一不可。在学习的过程中,一开始觉得知识是线性的,就像一个数组,只需要不断往里面填充数据,然而后面越学习,越发现知识是广度的,到达一定程度后,我们想学习一个知识,往往需要学习一连串的其他知识,其中不乏需要使...原创 2021-09-27 20:51:40 · 109 阅读 · 0 评论 -
JVM--堆内存结构
接着上篇文末,来详细了解堆,这也是我们做性能优化时针对的地方上次提到堆中存放着实例化的对象,我们知道c语言中没有类的概念,只有结构体,Java中的类最底层实际上也是一个结构体,实例化的类,我们又称为引用型对象,实际就是一个指针指向结构体的内存,结构体内存是连续的空间下面的c代码计算了结构体的内存大小:#include<stdio.h>#include<string.h&g...原创 2021-09-29 22:02:58 · 194 阅读 · 0 评论 -
JVM--类加载与反射
对JVM的内存有了一定理解后,再来看JVM是如何加载类,以及Java的反射机制一、类加载过程有了前面的了解,我们知道Java文件先要编译成class文件,再由JVM加载class到方法区,加载类的过程又可以细分为:加载、连接、初始化、使用、卸载类加载生命周期1.加载(Loading)Java编译为class文件后,在使用类时,JVM如果没有加载过class,则会先加载class文件...原创 2021-10-04 21:49:44 · 138 阅读 · 0 评论 -
Java--泛型
JDK5提出了新特性:泛型。它允许我们在不知道变量类型的情况下,传入类型参数,在设计框架时,我们会大量的使用泛型,因为泛型的特性:动态,上下边界,编译检查等,特别适合架构设计一、泛型上手1.类属性使用泛型定义泛型可以使用除关键字外的任意名字(遵循变量名的规则),使用"<泛型名>"来表示你需要使用泛型参数:public class Data<T> { priv...原创 2021-10-05 20:14:59 · 116 阅读 · 0 评论 -
Java--注解
注解是设计框架时常用的工具,使用注解简洁明了,很多第三方框架都使用了它,如:Retrofit、EventBus等。注解的原理是编译期改变字节码,以配合APT来达到自动生成代码的目的一、元注解1.使用注解需要用到元注解,来指定注解的信息,一共有5个,主要使用的是下面两个:@Target:指定注解的作用域,类、属性、方法、构造方法等下面表示注解作用在Class类上:@Target(Ele...原创 2021-10-08 22:42:26 · 73 阅读 · 0 评论 -
Java--线程
线程是什么?在计算机设计初期,并没有线程的概念,只有进程,linux系统下没有真正意义的线程,只有进程,c语言中的fork函数可以开辟一个新的进程,新的进程将对父进程进行内存拷贝,相当于复制全新的一个父进程,全新的内存,进程间内存的独立使得进程间通信较为繁琐由于进程间内存不共享,而我们做多进程操作时,为的就是并发进行某些操作,最后得到结果,并发操作时想用同一个对象,就需使用共享内存进行多进程通信...原创 2021-10-10 13:15:26 · 84 阅读 · 0 评论 -
Java--深入理解JMM模型、Java并发特性
上次说到Java线程并不会直接操作共享内存,而是操作共享内存的副本,这种方式称作JMM模型,描述的是Java多线程和内存之间的通信。我们上次使用了HotSpot虚拟机的内存模型进行理解,但JMM模型并不是JVM的内存模型,两者都是一种规范,各个虚拟机都有不同的实现方式,JMM模型模仿的是CPU缓存模型真正的JMM模型如下:JMM模型Java中每个线程都有自己独立的工作内存,存在主内...原创 2021-10-12 16:01:23 · 105 阅读 · 0 评论 -
Java--多线程锁机制
上次通过三个例子,了解了Java并发三个特性,也分析了volatile不能解决原子性问题的原因,要解决原子性问题,就需要用到锁一、轻量级锁与重量级锁1.锁的概念锁:一个线程对共享对象进行加锁,别的线程访问该对象时会处于等待状态,直到锁被释放,才能继续执行补充:volatile底层也是通过lock原子性操作,但它只对写入共享变量值时进行了加锁,别的线程可能已经使用旧值副本在进行计算了、或者已...原创 2021-10-13 22:29:48 · 354 阅读 · 0 评论 -
Java--线程池
Java中提供了一系列和锁相关的工具:synchronized、ReentrantLock、AtomicXXX类,它们都能帮助解决我们进行多线程操作时并发问题,之前我们也提到了内核线程模型,Hotspot虚拟机线程的创建都是通过内核线程提供的轻量级进程API创建的,反复的创建线程会不断的由OS线程调度,这也会消耗大量CPU性能争对创建线程,除了使用Thread之外,Java还提供了线程池类,它们...原创 2021-10-15 15:38:57 · 72 阅读 · 0 评论