LinYaoTian's Blog

JVM(四) - 虚拟机的类加载机制

概述虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。 与哪些在编译时需要进行连接工作的语言不同,在 Java 语言里,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为 Java 应用程序提供高度的灵活性,Java 里天生......
JVM

JVM(三) - 类文件结构

概述实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java 虚拟机不和包括 Java 在内的任何语言绑定,它只与“ Class 文件”这种特定的二进制文件格式所关联,Class 文件中包含了 Java 虚拟机指令集和符号以及若干其他辅助的信息。 Java 语言中的各种变量、关键字和运算符的语义最终都是由多条字节码命令组合而成的,因此字节码命令所能提供的语义描述能力肯定比会被 Java ......
JVM

JVM(二) - 垃圾收集器与内存分配策略

概述在 Java内存运行时区域中,程序计数器、虚拟机栈、本地方法栈 三个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性。在这几个区域内不需要过多考虑回收的问题,因为方法结束或线程结束时,内存自然就跟随着回收了。 而Java堆 和 方法区 则不一样......
JVM

JVM(一) - Java 内存区域

Java 内存区域Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存分为若干个不同的数据区域 。这些区域都有各自的用途,以及创建和销毁的时间,有的区域遇着虚拟机进程的启动而存在,有的区域则依赖用户线程的启动和结束而建立和销毁。 Java 内存区域也称为 Java 运行时数据区域。其中包括:程序计数器 ,虚拟机栈 ,本地方法栈 ,Java 堆 ,方法区 ,运行时常量池 。此外还有......
JVM

ItemTouchHelper 实现可拖拽和侧滑的列表

前言话不多说,直接上图:笔者使用 RecyclerView 的 ItemTouchHelper 来实现这个效果,过程非常简单。 实现功能: 按住 item 左侧的按钮可以上下拖动 item 向右侧滑删除 item item 拖动或侧滑时有阴影效果 实现基本功能循序渐进学习,这里我们先实现基本的功能: 长按 item 实现上下拖拽 向右侧滑删除布局文件很简单,不多说,直接上代码: ......

仿知乎分享界面

前言最近在做一个资讯类的APP,上面需要一个分享功能,项目不大,如果去使用官方的SDK还需要审查之类的,感觉太麻烦。偶然看到知乎的分享界面做得不错,拿到我这个项目中正合适,在网上查了一下资料,使用BottomSheetDialogFragment结合系统自带的分享功能就可以做到它的效果。 知乎分享界面: 自己完成的效果图:) 布局文件1234567891011121314151617181......