- 博客(8)
- 收藏
- 关注
原创 Java I/O体系之Writer和Reader详细讲解
介绍:Writer是字符输出流的基类,Reader是字符输入流的基类。这两个类的实现类基本都是成对存在的,下面就成对讲解。字节流与字符流区别请查看:字节流和字符流的区别体系图:...
2020-04-29 22:29:14 1025
原创 Java I/O之字节流与字符流的区别
字节流与字符流的区别:上图解析:字节输出流是直接把字节数据写出到磁盘或其他设备上,而字符输出流会先把字符输出流按一定的编码规则进行编码成二进制的字节输出流再写出到磁盘或其他设备上。字节输入流每次读取一个字节数据到内存(也可以使用缓冲区一次读取多个),而字符输入流是每次读取多个字节的数据到内存中,然后对读取的字节数据按照一定的编码规则进行解码,然后形成文本数据。总的来说,系统到磁盘或者其...
2020-04-26 18:17:06 937
原创 JVM初学之JVM的垃圾回收机制与垃圾回收器
如何判断对象是否"已死":首先,我们要对对象进行垃圾回收之前,就必须要判断对象是否“已死”,也就是是否可回收。这里有两种判断逻辑:引用计数法:在对象内部维护一个引用计数器,每当有一处地方引用该对象时,该计数器就加一,每当有一个引用失效时,该计数器就减一,当引用计数器为0时,表示该对象不可能再被使用,属于可回收对象。优点: 实现简单,判断效率高。缺点: 很难解决对象之间循环引用的问题。...
2020-04-16 16:38:58 182
原创 JVM初学之堆的内存模型
定义:堆是JVM运行时内存区域中最大的一个区域,我们平常创建的对象,数组的内存都是在堆上分配的。堆不仅仅只是一块大区域,它分为多个不同作用的区域。Old区。Young区。Young区又分为Eden区和两个大小相同的Survivor区,这两个区有的叫s1 和 s2 也有将from 区 和 to区。解释:如图,左边的是old区,右边的是Young区。Young区又分为Eden区和S...
2020-04-15 10:59:08 281
原创 JVM初学之JVM的运行时数据区
什么是JVM的运行时数据区:看下图:java虚拟机在该虚拟机进程运行过程中定义了各种各样的运行时数据区。用于存储java程序运行时各种不同的数据。有些运行时数据区是在java虚拟机进程开始时就创建,进程结束时销毁,但是一些运行时数据区是在线程创建时跟着创建,线程终止时销毁。JVM六大运行时数据区:堆。方法区。虚拟机栈。本地方法栈。程序计数器。运行时常量池。由于运行时常量...
2020-04-09 18:12:13 179
原创 JVM初学之类java的类加载器和双亲委派模型
类加载器:定义:java类加载器用于对java类的加载,java有自带的类加载器,也可以自定义类加载器实现定制化,类似于tomcat。java自带了三个系统的类加载器:如下图:双亲委派模型:背景:我们都知道,jdk中存在java.lang.String类,但是如果我们自定义一个全类名也为java.lang.String的类的话,如果都加载的话系统中就会存在多个全类名相同的类,这样会使得...
2020-04-07 22:22:57 121
原创 JVM初学之类的加载过程
类的加载过程分为三个步骤:装载:(这个过程使用类加载器完成的)a)类加载器通过一个类的全限定名找到该java源码文件,并转化为字节流。b)这些字节流中会有描述该类的静态存储结构的信息,根据这些信息在方法区转换为对应的运行时数据结构。b)在java堆里创建一个代表该类的java.lang.Class对象,用于作为访问这些运行时数据的入口。链接:a)验证:保证所加载的类的正确性,包括文件...
2020-04-07 21:21:56 125
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人