Java随笔
文章平均质量分 87
冲就完事了
这个作者很懒,什么都没留下…
展开
-
Java并发(一):并发基础
文章目录Java并发基础知识进程、线程、协程进程和线程的区别和联系:线程和协程的区别和联系多线程导致的问题死锁内存泄漏线程不安全线程的生命周期上下文切换Java并发基础知识进程、线程、协程进程:进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。线程:进程是拥有资源和独立运行的最小单位,也是程序执行的最小单位。线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个 进程的其它线程共享进程所拥有的全原创 2021-07-05 10:44:59 · 180 阅读 · 0 评论 -
Java类加载机制学习笔记
文章目录Java类加载类的加载时机会触发类初始化的场景类加载的过程1.加载2.验证3.准备4.解析5.初始化类加载器双亲委派模型Java类加载 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类加载机制。 类的加载的最终产品是位于堆区中的 Class对象, Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类的加载时机 一个类型从被加原创 2021-07-03 17:08:28 · 204 阅读 · 0 评论 -
关于JVM垃圾收集机制的笔记和一些思考
文章目录JVM垃圾回收1.JVM内存分配2.JVM如何判断对象存活状态3.垃圾收集算法3.1 标记-清除算法3.2 复制算法3.3 标记-整理算法3.4 分代收集算法4.垃圾收集器1.Serial 收集器2.ParNew 收集器3.Parallel Scavenge 收集器4.Serial Old 收集器5.Parallel Old 收集器6.CMS 收集器7.G1 收集器5.GC触发条件5.1 Minor GC5.2 Full GCJVM垃圾回收1.JVM内存分配 Java的内存管理主要包含对象内原创 2021-07-02 11:27:46 · 159 阅读 · 0 评论 -
JVM内存泄漏的几种常见情况分析
内存泄漏的定义:不会再被使用的对象,其占用的内存却不能被回收,这就是内存泄漏。内存泄漏的本质是:长生命周期的对象持有短生命周期对象的引用在学习GC的过程中我们知道,JVM在垃圾回收时判断一个对象是否应该被回收,采用的是可达性分析算法。因此,从这个角度来理解,内存泄漏现象就是应该被回收的无用对象却由于某些原因在可达性分析算法中被判断为可达,因此无法被回收。内存泄漏的常见情况有以下几种:1.使用容器造成内存泄漏对象被加入容器内之后,就由容器对象持有该对象的引用。因此在该对象被使用完成之后,即使将原创 2021-07-01 11:18:32 · 1778 阅读 · 0 评论 -
对JVM内存模型的一些理解
文章目录JVM(Java virtual machine)1.JVM内存模型(JDK8)2.内存区域分类3.各区域的介绍及其作用详解3.1 程序计数器3.2 虚拟机栈3.3 本地方法栈3.4 堆3.5 方法区JVM(Java virtual machine)1.JVM内存模型(JDK8)Java1.8的改动:将永久代移除,取而代之的是元空间。元空间不再与堆是连续的物理内存,而是改为使用本地内存(Native Method)。也就意味着只要本地内存足够,就不会出现OOM(OutOfMemory)的原创 2021-06-30 16:21:21 · 268 阅读 · 0 评论 -
Java学习笔记之:对反射的理解与代码试验
反射:Java的反射机制就是,在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能成为Java的反射机制。对反射机制的一点小小的测试首先定义一个类People,这个类主要用于测试反射的各种功能,因此特别分别声明了一些private和public的属性与方法。class People{ public int ID; private String name; public Pe原创 2021-06-22 20:56:23 · 85 阅读 · 0 评论 -
关于Java代理模式的一些理解
Java代理模式使用代理模式的一个好处:在不修改目标对象的基础上,实现目标对象的功能并且可以拓展。代理中的关键概念:代理对象与目标对象。代理对象是对目标对象的扩展, 并会调用目标对象。1.静态代理:代理类实现目标类的接口,传入目标对象作为自己的一个属性,在实现代理方法的时候实际上是调用目标对象的该方法,并在调用的前后进行拓展。//代理的接口public interface Hello{ public void sayHello();}//需要代理的目标类public class原创 2021-06-20 17:07:22 · 59 阅读 · 0 评论