java
文章平均质量分 75
kirwan
这个作者很懒,什么都没留下…
展开
-
【JVM】并发的可达性分析
并发的可达性分析在进行对象的可达性分析时,如果是全程STW是没问题的,但是在垃圾回收时暂停全部用户线程的活动会让使用者的体验非常差。但是如果在进行可达性分析时,用户线程和垃圾收集线程并发运行,可能用户线程会同时对引用关系进行修改。“并发”的可达性分析,这里的并发指的是用户线程(可以是多个用户线程)和垃圾收集线程一起运行。我们引入三种颜色对遍历对象图进行分析:白色:表示对象仍未访问到。如果到可达性分析结束后,对象仍为白色就说明对象不可达。灰色:表示对象已经被访问到,但是对象的所有引用还没有都原创 2021-05-07 13:51:20 · 208 阅读 · 0 评论 -
Java核心卷1知识点整理——第四章 对象与类(4.7-4.10)
4.7 包Java 允许使用**包(package)**将类组织起来。借助于包可以方便地组织自己的代码,并将自己的代码与别人提供的代码库分开管理。标准的 Java 类库分布在多个包中,包括 java.lang、java.util 和java.net等。标准的 Java包具有一个层次结构。如同硬盘的目录嵌套一样,也可以使用嵌套层次组织包。所有标准的Java 包都处于java 和 javax 包层次中。使用包的主要原因是确保类名的唯一性。假如两个程序员不约而同地建立了Employee类。只要将这些类放置在原创 2020-12-23 16:36:16 · 174 阅读 · 0 评论 -
Java核心卷1知识点整理——第四章 对象与类(4.4-4.6)
4.4 静态域与静态方法4.4.1 静态域如果将域定义为static,则为静态域。每一个对象对于所有的实例域都有自己的一份拷贝。而每一份拷贝中的静态域是共享的。class Employee { private static int nextId = 1; private int id; ...}现在,每一个雇员对象都有一个自己的id域,但这个类中的所有实例将共享一个nextId域。即使没有一个雇员对象,静态域nextId也存在。它属于类,而不属于任何独立的对象。静态域也被称为类域。原创 2020-12-22 16:35:33 · 139 阅读 · 0 评论 -
为什么Java中全局变量不一定初始化,局部变量必须初始化?
为什么Java中全局变量不一定初始化,局部变量必须初始化?类的成员变量有默认初始值,而方法内的局部变量却没有初始值。这个问题涉及到JVM类加载和字节码执行两个阶段,这两个阶段是依次执行的。JVM类加载是JVM利用类加载器将class文件加载到JVM的过程,涉及“加载”、“验证”、“”准备“、“”解析“和”初始化“。一、类的成员变量初始化 —在JVM类加载阶段完成类的成员变量又分为静态成员变量和非静态成员变量。1.静态成员变量静态成员变量会被初始化两次,第一次在“准备”阶段,先进行一次初始化,系转载 2020-12-20 10:24:01 · 1320 阅读 · 1 评论 -
Java核心卷1知识点整理——第四章 对象与类(4.1-4.3)
4.1 面向对象设计概述4.1.1 类Java所有编写的代码都位于某个类的内部。OOP的一个原则是***封装(encapsulation)***,封装就是将数据和方法组合在一个类中,并且对使用者隐藏数据的实现方式,不让使用者具有直接访问数据的权限,只能使用类中的方法对数据进行操作。另一个原则是可以扩展一个类来建立另一个新类。在扩展一个已有的类时,扩展后的新类会具有所扩展的类的全部数据和方法,在新的类中,只需要提供适用于新类的新方法和数据域就可以了。这个过程称为***继承(inheritance)**原创 2020-12-20 02:43:40 · 342 阅读 · 2 评论