From 296a91b5e4983142571253d7ab3ceca6d77ac8f7 Mon Sep 17 00:00:00 2001 From: jiayao Date: Mon, 20 Jul 2020 17:03:07 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=94=99=E5=88=AB?= =?UTF-8?q?=E5=AD=97"=E9=82=A3"->"=E5=93=AA"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/java/jvm/Java内存区域.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/java/jvm/Java内存区域.md b/docs/java/jvm/Java内存区域.md index 78b8c4bf..c82d8133 100644 --- a/docs/java/jvm/Java内存区域.md +++ b/docs/java/jvm/Java内存区域.md @@ -264,7 +264,7 @@ JDK1.4 中新加入的 **NIO(New Input/Output) 类**,引入了一种基于** #### Step2:分配内存 -在**类加载检查**通过后,接下来虚拟机将为新生对象**分配内存**。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。**分配方式**有 **“指针碰撞”** 和 **“空闲列表”** 两种,**选择那种分配方式由 Java 堆是否规整决定,而 Java 堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定**。 +在**类加载检查**通过后,接下来虚拟机将为新生对象**分配内存**。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务等同于把一块确定大小的内存从 Java 堆中划分出来。**分配方式**有 **“指针碰撞”** 和 **“空闲列表”** 两种,**选择哪种分配方式由 Java 堆是否规整决定,而 Java 堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定**。 **内存分配的两种方式:(补充内容,需要掌握)** From 7d82316aad1e2a2f69359e33d130e2ea84c4a7e9 Mon Sep 17 00:00:00 2001 From: jiayao Date: Mon, 20 Jul 2020 17:10:14 +0800 Subject: [PATCH 2/4] =?UTF-8?q?update=20=E4=BF=AE=E6=94=B9=E9=94=99?= =?UTF-8?q?=E5=88=AB=E5=AD=97"=E9=82=A3"->"=E5=93=AA"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/java/jvm/Java内存区域.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/java/jvm/Java内存区域.md b/docs/java/jvm/Java内存区域.md index c82d8133..0cae9f0a 100644 --- a/docs/java/jvm/Java内存区域.md +++ b/docs/java/jvm/Java内存区域.md @@ -286,7 +286,7 @@ JDK1.4 中新加入的 **NIO(New Input/Output) 类**,引入了一种基于** #### Step4:设置对象头 -初始化零值完成之后,**虚拟机要对对象进行必要的设置**,例如这个对象是那个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的 GC 分代年龄等信息。 **这些信息存放在对象头中。** 另外,根据虚拟机当前运行状态的不同,如是否启用偏向锁等,对象头会有不同的设置方式。 +初始化零值完成之后,**虚拟机要对对象进行必要的设置**,例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的 GC 分代年龄等信息。 **这些信息存放在对象头中。** 另外,根据虚拟机当前运行状态的不同,如是否启用偏向锁等,对象头会有不同的设置方式。 #### Step5:执行 init 方法 From daed7559bf359ce45dd438743c23f01242d1e23e Mon Sep 17 00:00:00 2001 From: jiayao Date: Tue, 21 Jul 2020 10:14:10 +0800 Subject: [PATCH 3/4] =?UTF-8?q?update=20=E6=9B=B4=E6=94=B9=E9=94=99?= =?UTF-8?q?=E8=AF=AF=20:=20[=E4=BF=A1=E4=BB=BB]=20->=20[=E6=96=B0=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/java/Multithread/java线程池学习总结.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/java/Multithread/java线程池学习总结.md b/docs/java/Multithread/java线程池学习总结.md index b9ac8ca2..3220e1b0 100644 --- a/docs/java/Multithread/java线程池学习总结.md +++ b/docs/java/Multithread/java线程池学习总结.md @@ -156,7 +156,7 @@ public class ScheduledThreadPoolExecutor - **`corePoolSize` :** 核心线程数线程数定义了最小可以同时运行的线程数量。 - **`maximumPoolSize` :** 当队列中存放的任务达到队列容量的时候,当前可以同时运行的线程数量变为最大线程数。 -- **`workQueue`:** 当新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果达到的话,信任就会被存放在队列中。 +- **`workQueue`:** 当新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果达到的话,新任务就会被存放在队列中。 `ThreadPoolExecutor`其他常见参数: From ce786620f9352ac0e49a4c0c53e63a40a1808cd8 Mon Sep 17 00:00:00 2001 From: jiayao Date: Tue, 21 Jul 2020 10:17:07 +0800 Subject: [PATCH 4/4] =?UTF-8?q?update=20=E6=9B=B4=E6=AD=A3=E9=94=99?= =?UTF-8?q?=E8=AF=AF=20:=20[=E6=94=BE=E6=BB=A1=E4=BA=86=E4=BB=BB=E6=97=B6]?= =?UTF-8?q?=20->=20[=E6=94=BE=E6=BB=A1=E4=BA=86=E4=BB=BB=E5=8A=A1=E6=97=B6?= =?UTF-8?q?]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/java/Multithread/java线程池学习总结.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/java/Multithread/java线程池学习总结.md b/docs/java/Multithread/java线程池学习总结.md index 3220e1b0..54f4b650 100644 --- a/docs/java/Multithread/java线程池学习总结.md +++ b/docs/java/Multithread/java线程池学习总结.md @@ -171,7 +171,7 @@ public class ScheduledThreadPoolExecutor **`ThreadPoolExecutor` 饱和策略定义:** -如果当前同时运行的线程数量达到最大线程数量并且队列也已经被放满了任时,`ThreadPoolTaskExecutor` 定义一些策略: +如果当前同时运行的线程数量达到最大线程数量并且队列也已经被放满了任务时,`ThreadPoolTaskExecutor` 定义一些策略: - **`ThreadPoolExecutor.AbortPolicy`**:抛出 `RejectedExecutionException`来拒绝新任务的处理。 - **`ThreadPoolExecutor.CallerRunsPolicy`**:调用执行自己的线程运行任务,也就是直接在调用`execute`方法的线程中运行(`run`)被拒绝的任务,如果执行程序已关闭,则会丢弃该任务。因此这种策略会降低对于新任务提交速度,影响程序的整体性能。如果您的应用程序可以承受此延迟并且你要求任何一个任务请求都要被执行的话,你可以选择这个策略。