![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习
文章平均质量分 73
a282608054
这个作者很懒,什么都没留下…
展开
-
JAVA基础学习
一.java基础1.为什么java可以一次编码到处运行答:.java文件进过编译器编译生成.class文件,JVM在不同平台会将.class文件翻译成相应的机器码。从而实现一次编码到处运行2.一个java文件可以含有多个类吗答:可以,但是只能含有一个public类,同时这个类名必须与java文件名一致3.说一说你对Java访问权限的了解四种访问权限:private,defalut,protected,public修饰类时:public:任意包下的任意类访问defalut:本包下的类访问修原创 2021-07-25 12:58:20 · 107 阅读 · 0 评论 -
Java垃圾回收学习
一.垃圾识别1.引用计数法引用计数法给对象添加一个引用计数器,每当有一个地方引用该对象,对象的计数器就加 1,当引用失效,计数器就减 1,任何时候计数器为 0 的对象就是不可能再被使用的。这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来进行垃圾识别,其最主要的原因是它很难解决对象之间相互循环引用的问题。2.可达性分析法可达性分析算法通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引原创 2021-07-25 01:31:00 · 96 阅读 · 0 评论 -
Java对象实例化学习笔记
一.对象实例化的过程1.类加载检查主要做两件事情:1.指令涉及的参数是否可在常量池中定位到相关符号引用2.该符号引用对应的类是否完成类加载2.分配内存地点:大部分在堆中分配内存(少数在栈中分配,JIT逃逸分析中有说明为什么),大小:对象的内存大小在类加载完成之后就确定了,不会因为属性不同而导致大小不同。策略:指针碰撞和空闲列表采用指针碰撞时,利用一个指针作为已划分内存和未划分内存的分界点,通过不断移动指针记录未划分内存的起始地址。如下图,虚线填充部分表示该部分内存已分配:空闲列表则应用原创 2021-07-25 01:03:01 · 115 阅读 · 0 评论 -
类加载过程学习笔记
1.类加载步骤1.加载2.连接(验证,准备,解析)3.初始化1.1 加载加载过程主要有三步:1.通过类的全限定名来获取这个类的二进制流(来源可以是压缩包,网络,动态代理等)2.将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构(这里理解为将外部字节流格式转换成虚拟机内部规定的格式存储在方法区中)3.在堆中生成class对象,作为访问方法区中该类的数据结构的入口1.2 链接1.2.1 验证由于二进制流的来源不受虚拟机的控制,所以需要对其进行安全验证。包括:文件格式验证,元数据原创 2021-07-24 23:24:32 · 112 阅读 · 1 评论 -
多线程异常处理
多线程异常处理子线程异常不能抛给主线程处理public static void main(String[] args) { try { Thread thread = new Thread(() -> { int a = 1 / 0; }); thread.start(); } catch (Exception t) { System.out.println("thread exception is caughted here!"); }}运行结果:可以看出原创 2021-02-08 21:03:53 · 1381 阅读 · 0 评论 -
创建线程的四种方式
创建线程的四种方式一.通过重写Thread类中的run方法public class greatThread { public static void main(String[] args) throws InterruptedException { //1.通过继承Thread创建 threadTest threadTest1 = new threadTest(); threadTest1.start(); } static cl原创 2021-02-05 23:02:02 · 208 阅读 · 1 评论