随笔分类 -  java

摘要:一、概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 二、类加载的时机 类的生命周期: 类“初始化”的触发条件(有且仅有以下五点): 1.遇到new、getstatic、putstatic 阅读全文
posted @ 2020-10-29 02:04 吹不散的流云 阅读(154) 评论(0) 推荐(0) 编辑
摘要:一、对象的创建 1.类加载检查。虚拟机遇到new指令时,首先去检查指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 2.为新生对象分配内存。(对象所需内存的大小在类加载完成后便可以完全确定) 内存分配方式: 阅读全文
posted @ 2020-10-22 00:53 吹不散的流云 阅读(216) 评论(0) 推荐(0) 编辑
摘要:一、为什么要使用线程池 线程池复用线程有以下几点优点: 减少资源创建 ⇒ 减少内存开销,创建线程占用内存。使用 new Thread 每次启动线程都需要进行对象和线程; 降低系统开销 ⇒ 创建线程需要时间,会延迟处理的请求; 提高稳定稳定性 ⇒ 避免无限创建线程引起的 OOM; 功能更强大 ⇒ 提供 阅读全文
posted @ 2020-03-30 23:59 吹不散的流云 阅读(101) 评论(0) 推荐(0) 编辑
摘要:J.U.C 是 java.util.concurrent 的缩写,是 jdk 的并发包,包含了很多并发相关的类。下面介绍常用的类。 一、Atomic 原子操作类 1. 原子更新基本类型 使用原子的方式更新基本类型,Atomic 包提供了以下 3 个类: AtomicBoolean AtomicInt 阅读全文
posted @ 2020-03-29 16:46 吹不散的流云 阅读(148) 评论(0) 推荐(0) 编辑
摘要:一、安全发布 1. 对象发布与逸出 发布对象:使对象能够在当前作用域之外的代码中使用 逸出:某个不应该发布的对象被发布 (1)变量逸出原有作用域 程序示例: public class N00_Test { private String[] strs = {"1", "2", "3"}; public 阅读全文
posted @ 2020-03-28 00:23 吹不散的流云 阅读(117) 评论(0) 推荐(0) 编辑
摘要:一、线程安全 1. 线程安全 可以简单的理解为:一个方法或者一个实例可以在多线程环境中使用而不会出现问题。 2. 线程不安全的原因 多个线程使用了相同的资源,如同一内存区(变量、数组或对象)、系统(数据库、web服务等)或文件等。更准确的说,是多个线程对同一资源进行了写操作。多个线程只读取相同的资源 阅读全文
posted @ 2020-03-24 03:09 吹不散的流云 阅读(115) 评论(0) 推荐(0) 编辑
摘要:date: 2020-03-23 00:50:25 一、 基本概念 并发:一个处理器处理多个任务,逻辑上的同时发生。 并行:多个处理器同时处理多个任务,物理上的同时发生。 二、Java 线程基础 1. 线程 进程与线程 进程: 程序运行的一个实例。 线程:程序的执行单元,是程序使用 CPU 的基本单 阅读全文
posted @ 2020-03-23 00:50 吹不散的流云 阅读(116) 评论(0) 推荐(0) 编辑
摘要:date: 2018-10-18 13:03:17 堆的回顾 很多垃圾回收算法,如CMS,使用的堆内存结构如下: 新手代:一个Eden和两个survivor 老年代:old space 持久带:1.8之前的perm space 元空间:1.8之后的metaspace 注:这些space必须是地址连续 阅读全文
posted @ 2020-01-13 13:03 吹不散的流云 阅读(109) 评论(0) 推荐(0) 编辑
摘要:date: 2018-10-16 13:02:54 对象存活判定算法 引用计数法(Reference Counting) 思路很简单,给每个对象中添加一个引用计数器,每当一个地方引用它时,计数器值加一;当引用失效时,计数器值减一。任何时候,当计数器值为0就不可能再被使用了。 引用计数法实现简单,判断 阅读全文
posted @ 2020-01-12 13:02 吹不散的流云 阅读(101) 评论(0) 推荐(0) 编辑
摘要:date: 2018-10-14 13:02:33 前言 目的:监控GC执行和JVM基本内存状态。 Trace跟踪参数 -verbose:gc or -XX:+PrintGC 打印GC的简要信息 在虚拟机发生内存回收时在输出设备显示信息 实例: /** * @author ZenoYang * wi 阅读全文
posted @ 2020-01-11 13:02 吹不散的流云 阅读(177) 评论(0) 推荐(0) 编辑
摘要:date: 2018-10-03 13:01:52 JVM启动流程 JVM基本结构 程序计数器 每个线程拥有一个PC寄存器 在线程创建时创建 指向下一条指令的地址 执行本地方法师,PC的值为undefined 方法区 所有线程共享 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等 阅读全文
posted @ 2020-01-10 13:01 吹不散的流云 阅读(105) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示