![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
享学Java基础
李国菁LGJ
一名小菜鸟,需要大神提携
展开
-
Android 虚拟机与ClassLoader 类加载
一、JVM与Dalvik 1、Android应用程序运行在Dalvik/ART虚拟机上,并且每个应用程序对应有一个单独的Dalvik虚拟机实例,Dalvik虚拟机也算是一个Java虚拟机,只不过它执行的不是class文件,而是dex文件。 2、Dalvik虚拟机和Java虚拟机两者指令集是不一样的,前者基于寄存器的,后者是基于栈的 3、基于虚拟机栈的如下图: 执行过程如下图所示,都是在操作数栈进进出出,配合局部变量表来进行的。 4、基于寄存区的虚拟机 基于寄存器的虚拟机中没有操作数栈 ...原创 2020-12-27 12:02:42 · 223 阅读 · 0 评论 -
JVM 对象的创建和垃圾回收机制
一、虚拟机中对象的创建过程 类的符号引用:用一组符号描述这个类的信息(com.lgj.Demo 类似这种) 1、当Object o = new Object();首先在方法区中的常量池是否能够定位到这个类的符号引用 2、指针碰撞:堆空间是非常规整的,有一个指针,指向最后一个对象分配的地址位置,然后当新new 一个对象的时候,这个指针移动一个对象大小的距离。如下图所示,红色代表已经占了的内存,白色代表还没占的内存。 3、空闲列表:当堆内存经过垃圾回收之后,内存就有可能出现,下图所示,然后,专门有一张表来记原创 2020-12-25 22:41:12 · 248 阅读 · 0 评论 -
JVM 内存分析
一、JVM 与操作系统的关系 1、JVM 把 .class 文件翻译成操作系统能识别的 2 进制数据进行执行。 2、JVM跨平台性:假设我们写一个HelloWord.java程序,它即可以在Linux平台上运行,又可以在Windows平台运行,这个主要得益于 JDK的版本有Linux 和 Windows。 3、JVM跨语言:Kotlin 可以运行在JVM上面,还有groovy 语言等都是运行在JVM上。 二、运行时数据区 1、运行时数据区:Java虚拟机在执行程序的过程中,会把它所管理的内存分为如干个不同原创 2020-12-22 22:27:37 · 373 阅读 · 0 评论 -
Rxjava使用以及源码分析
一、Rxjava 的核心思想 1、发布订阅模式,发布者发布信息,订阅者如果订阅了该信息,那么就可以获取该信息 2、举个例子: 下载图片 需要展示在ImageView上,下载图片相当于发布者,显示在ImageView上相当于订阅者,订阅者时刻观察发布者的动态,当下载图片完成后,立马显示在ImageView上 3、一件事情,有起点(下载图片) 有终点(展示在ImageView上)在这中间可以穿插任何的卡片信息 4、 比如在到达终点之前,可以给图片加上水印信息,这些都可以看做是穿插的卡片信息,上代码 priva原创 2020-12-05 17:25:53 · 144 阅读 · 0 评论 -
Java 多线程那点事
一、首先讲解 Volatile 关键字,上Demo,大家思考下,"子线程结束"这句话能不能打印呢? public class VolatileTest { public static void main(String[] args) { MyVolatileRunnable myVolatileRunnable = new MyVolatileRunnable(); new Thread(myVolatileRunnable).start(); try {原创 2020-11-28 10:50:54 · 99 阅读 · 0 评论 -
Java注解应用场景
注解有三种级别,注解的保留级别不同,对注解的使用场景自然不同, 源码级别: 1.APT 在编译期能够获取注解与注解声明的类,包括类中的 所有成员信息,一般用于生成额外的辅助类. 2.可以提供IDE语法检查,取代枚举的使用 字节码: 1.在编译出Class后,通过修改Class数据以实现修改代码逻辑目的。 2.对于是否需要修改的区分或者修改为不同逻辑的判断可以使用注解(这块还没用应用实例) 运行期: 在程序运行期间,通过反射技术动态获取注解与其元素,从而完成不同原创 2020-11-21 09:17:40 · 558 阅读 · 0 评论 -
Java 泛型理解
请阅读下面代码,理解泛型真正的意义 public class Demo1<H> { // 不能在静态域或者方法上引用泛型 // public static H instance; // // 这两种写法都是错误的,不被允许,因为静态的变量和方法所以类, // public static H getInstance{ // return instance; // } public static void main(String[] args)原创 2020-11-15 19:37:26 · 107 阅读 · 0 评论