
JVM
文章平均质量分 87
JVM
hellosc01
喂,你知道吗,有时候,自由意志就是你能主动选择最小概率的路。
展开
-
5种常用的线程池
目录0 概述1 newCachedThreadPool(可缓存的线程池)2 newFixedThreadPool(固定大小的线程池)3 newScheduledThreadPool(可做任务调度的线程池)4 newSingleThreadPool(单个线程的线程池)5 newWorkStealingPool(足够大小的线程池)0 概述Java定义了Executor接口并在该接口中定义了execute()用于执行一个线程任务,然后通过ExecutorService接口实现Executor接口并执行具体的原创 2021-03-20 19:58:20 · 6830 阅读 · 0 评论 -
JVM总览
目录1 JVM的运行机制及构成1.1 运行机制1.2 JVM的构成1.3 多线程2 JVM内存区域解读2.0 概述2.1 程序计数器2.21 JVM的运行机制及构成1.1 运行机制JVM是用于运行Java字节码的虚拟机,它运行在操作系统之上,不与硬件设备直接交互;Java源文件在通过编译器编译后生成相应的.class文件(字节码文件),.class文件又被JVM中的即时编译器和解释器编译成机器码在不同的平台(Windows、Linux、Mac)上运行;Java在不同平台上运行时不需要重新编译成.原创 2021-03-19 12:06:35 · 303 阅读 · 0 评论 -
详解Java类加载机制
目录1 类加载概述2 类的生命周期3 类加载过程3.1 加载3.2 验证3.3 准备3.4 解析3.5 初始化1 类加载概述类是在运行期间第一次使用时动态加载的,而不是一次性加载所有类。因为如果一次性加载,就会占用很多内存。2 类的生命周期包括以下 7 个阶段:加载(Loading)验证(Verification)准备(Preparation)解析(Resolution)初始化(Initialization)使用(Using)卸载(Unloading)3 类加载过程包括了加载原创 2020-11-30 15:09:33 · 195 阅读 · 0 评论 -
JVM内存分配与内存回收策略
1 内存回收策略1.1 Minor GC1.2 Full GC2 内存分配策略2.1 对象优先在 Eden 分配2.2 大对象直接进入老年代2.3 长期存活的对象进入老年代2.4 动态对象年龄判定2.5 空间分配担保3 Minor GC的触发条件4 Full GC 的触发条件4.1 调用 System.gc()4.2 老年代空间不足4.3 空间分配担保失败4.4 Concurrent Mode Failure原创 2020-11-28 08:41:57 · 217 阅读 · 0 评论 -
JVM垃圾回收详解:判断回收机制、引用类型、垃圾回收算法、分代回收、垃圾收集器
垃圾收集主要是针对堆和方法区进行。程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后就会消失,因此不需要对这三个区域进行垃圾回收。...原创 2020-11-27 19:31:23 · 251 阅读 · 0 评论 -
Java对象的创建步骤、对象的内存布局以及对象的访问方式详解
1 Java对象的创建步骤1.1 类加载检查虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。1.2 分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存;对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来;分配方式由 “指针碰撞” 和 “空闲列表” 两种,选择哪种分配方式由原创 2020-11-26 08:21:16 · 234 阅读 · 0 评论 -
字符串常量池,String字面量创建和new创建的区别,intern(),字符串拼接
目录1 String 对象的两种创建方式2 intern() 方法3 字符串拼接1 String 对象的两种创建方式1 字面量String str1 = "abcd";2 newString str2 = new String("abcd");第一种方式是在String Pool中获取对象:“abcd” 属于字符串字面量,因此编译期会在String Pool中创建一个“abcd”字符串对象,运行期返回该“abcd”字符串对象的引用;如果String Pool 中已经有一个 “abcd原创 2020-11-24 19:23:27 · 1280 阅读 · 2 评论 -
Java程序运行时JVM数据区域解读
目录1 程序计数器(Program Counter Register)2 Java 虚拟机栈3 本地方法栈4 方法区5 运行时常量池6 JVM常见参数1 程序计数器(Program Counter Register)当前线程所执行的字节码行号指示器(逻辑);通过改变计数器的值来选取下一条需要执行的字节码指令;线程私有;对Java方法计数,如果是Native方法则计数器的值为Undefined;只是计数,不会发生内存泄漏;2 Java 虚拟机栈每个 Java 方法在执行的同时会创建一个栈原创 2020-11-23 21:42:44 · 211 阅读 · 1 评论