-
类加载机制
1.类加载的过程虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,并最终形成可以被虚拟机直接使用的java类型。过程:加载–>验证–>准备–>解析–>初始化–>使用–>卸载。其中验证、准备、解析这3个称为连接阶段。1.加载1.通过一个类的全限定名来获取定义此类的二进制字节流。2.将这个字节流所代表的静态存储结构转化为方法区运行时的数据结构。3.在内存中生成一个代表这个类的java.lang.class对象,作为方法区这个...…
-
垃圾收集器和内存分配策略
1.对象已死吗?1.判断方法判断一个对象是否死亡的方法:引用计数算法和可达性分析算法。引用计数算法:给对象添加一个引用计数器,有一个地方引用它就给它+1,引用失效就-1,当值为0表示引用已失效。缺点:无法解决对象之间相互引用的问题。可达性分析算法:通过一系列的称为“GC Roots”的对象作为起点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。2.关于引用JDK1.2后引用分为强引用、软引用、弱引用、虚引用。强...…
-
秒懂反射
1.概述反射就是通过对象的字节码生成对应的对象及对象的各个成员。一个类的成员包括:包名package,构造器constructor,属性字段field,普通方法method.因此类的字节码同样是由这四样构成,反射的目的也是获取这四个成员。2.获取字节码的三种方式① :类.Class;② 对象.getClass();③ Class.forName(“类的全路径”);以Student为例子:package com.example.demo.reflect1.study;@Datapublic ...…
-
JVM内存的各个区域
1.概述Java虚拟机运行的数据区域分为:线程隔离的数据区和非线程隔离的数据区。线程隔离的数据区包括:程序计数器、虚拟机栈、本地方法栈。所有线程共享的数据区包括:堆和方法区。2.各个区域介绍1.程序计数器程序计数器是当前线程执行的字节码的行号指示器。执行Java方法时,它记录的是正在执行的虚拟机字节码指令的地址。执行native方法时,计数器的值为null。异常:唯一一个不会抛出OutofMemoryError的内存数据区域。注:”native method”:Java调用非Java代码的...…
-
线程安全性
1.线程安全的定义多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程如何交替运行,并且在主掉代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类时线程安全的。2.如何编写线程安全的代码要编写线程安全的代码,其核心在于对状态访问操作进行管理,特别是对共享的(shared)和可变的(mutable)状态的访问。共享意味着可以由多个线程同时访问,可变意味着它的值在生命周期内可以发生变化。一个对象是否需要时线程安全的,取决于他是否被多个线程访问,要使得他是线程...…
-
HEXO搭建个人博客
经过各种找资料,踩过各种坑,终于使用 hexo 搭建个人博客初步完成了,域名目前用得时 github 的,我的 hexo 是 3.1.1 版本,hexo 不同的版本,很多配置都不一样。好吧,废话不多说了,开始吧。 本篇文章累计了大量评论,和我的一些解答,读者有什么问题可以先看看评论,或者搜下关键字,如果还是有问题可以给我在评论里给我留言,问题很着急的可以加我 QQ:1499065178 ,或者给我发邮件:leopardpan@icloud.com ,都可以,如果你已经搭建完成了,可...…
-
jdk1.8特性--stream
1.描述Classes to support functional-style operations on streams of elements, such as map-reduce transformations on collections.翻译成中文就是:这个类用于支持元素流上的功能样式操作,例如集合上的映射还原转换。就是说一般用来操作集合:将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选, 排序,聚合等。对应的包:Package java...…
-
我的第一篇文章
红尘滚滚,爱别离,怨长久。 20 Sep 2018…