加载中
001. 深入JVM学习—Java运行流程

Java运行流程图 2. Java运行时数据区 3. Java虚拟机栈 栈内存是线程私有的,其生命周期和线程相同; 虚拟机栈描述的是Java方法执行的内存模型:执行一个方法时会产生一个栈帧随后将其保存到栈...

2018/06/22 12:04
318
015. 深入JVM学习—Java引用类型

引用类型划分 强引用:当内存不足时,JVM宁可出现“OutOfMemoryError”错误停止,也需要进行保存,并且不会将此空间回收。 软引用:当内存不足的时候,进行对象的回收处理,往往用于高速缓存...

2018/06/28 19:06
65
003. 深入JVM学习—Java堆内存模型

GC收集原理 对不需要的对象进行处理标记,而后进行清除。 2. JVM堆内存划分 JDK1.8 以前 JDK1.8 以后 在JDK1.8之后将最初的永久代内存空间取消,取消永久代的目的是为了将HotSpot和JRockit两...

2018/06/22 13:05
138
002. 深入JVM学习—JVM对象访问模式

Object obj = new Object(); 分析 Object obj:描述的是保存在栈内存之中,而后保存有堆内存的引用,这个数据会保存在本地变量表中(变量表描述有哪些对象,保存对象栈的位置,栈对应着堆内存...

2018/06/22 13:03
265
005. 深入JVM学习—Java堆内存参数调整

JVM整体内存调整图解(调优关键) 实际上每一块子内存区域都会存在一部分可变伸缩区域,其基本流程:如果内存空间不足,则在可变的范围之内扩大内存空间,当一段时间之后,内存空间不紧张的时...

2018/06/22 13:09
192
018. JVM 的参数及调优

调优基本概念 在调整性能时,JVM 有三个组件: 堆大小调整 垃圾收集器调整 JIT 编译器 大多数调优选项都与调整堆大小和为您的情况选择更适合的垃圾收集器有关。 JIT 编译器对性能也有很大影响...

05/14 02:29
44
004. 深入JVM学习—Java垃圾回收流程

GC处理流程图 整个GC流程中,最需要处理的是年轻代和老年代内存的清理操作,而元空间(永久带)都不在GC范围内。 当有一个新对象产生,需要分配空间; 首先会判断伊甸园区是否有内存空间,如...

2018/06/22 13:07
675
001. JAVA程序运行原理分析

先来看看JVM运行时数据区的结构 线程独占: 每个线程都有它独立的空间,随线程生命周期而创建和销毁。 线程共享: 所有线程能访问这块内存数据,随虚拟机GC 而创建和销毁。 方法区 JVM 用来存储...

2019/11/22 00:20
111
006. 线程安全之 JAVA 锁相关

JAVA中锁的概念 自旋锁: 是指当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后不断地判断锁是否能够被成功获取,直到获取到锁才会退出循环。 乐观锁: 假如没...

04/05 04:33
129
008. 深入JVM学习—永久代

永久代的相关知识 JDK1.8之后取消。 永久代是在堆内存中保存的,但不会被回收,例如:intern()方法产生的对象不会被回收。所以如果你的操作不当,导致永久代中数据量过大,那么这个时候程序依...

2018/06/25 14:39
73
009. 深入JVM学习—元空间

元空间相关知识 元空间是1.8之后才有的,其功能其实和永久代一样。唯一的区别在于永久代使用的是JVM堆内存空间,而元空间使用的是物理内存,直接受到本机物理内存的限制。 2. 元空间内存参数...

2018/06/25 14:50
350
006. 深入JVM学习—年轻代

年轻代图片 年轻代(Young)属于JVM堆内存空间的一个组成部分 所有使用关键字new新实例化的对象一定会在伊甸园区进行保存,而对于存活区保存的一定是已经在伊甸园区存在一段时间并且经过了几...

2018/06/22 17:22
66
007. 深入JVM学习—老年代

老年代空间的主要目的是用于存储由Eden发送来的对象,一般在经历好几次“Minor GC”还会保存下来的对象,才会被复制到老年代,这样就可以存放更多的对象,同时在老年代中执行GC的次数也相对较...

2018/06/25 14:08
40
063. 使用 Dockerfile 运行一个简单的 Java 程序

准备一个没有第三方依赖的 java web 项目。 把该 war 包上传到安装有 docker 软件的服务器上宿主目录下。在同级目录下创建 Dockerfile。 编写 Dockerfile 文件内容。 # 基础镜像使用 tomcat...

09/15 13:53
41
046. 使用 Java 实现一个简单的内存缓存

场景 在 Java 应用中,对于访问频率高,更新少的数据,通常的方案是将这类数据加入缓存中。相对从数据库中读取来说,读缓存效率会有很大提升。 在集群环境下,常用的分布式缓存有 Redis、Mem...

08/20 10:59
96
011. 深入JVM学习—垃圾收集策略配置

GC策略调整参数 No. 参数名称 年轻代GC效果 老年代与元空间GC效果 01 -XX:+UseSerialGC 串行GC(Serial Copying) 串行GC(Serial MSC) 02 -XX:+UseParallelGC 并行回收GC(Parallel Scaven...

2018/06/26 20:31
59
014. 深入JVM学习—G1收集器配置

G1收集器参数 No. 参数名称 描述 01 -XX:G1HeapRegionSize=n 设置G1区域的大小,每个区域大小可选范文:1MB~32MB之间,目标是根据最小的堆内存大小划分出约2048个区域。 02 -XX:MaxGCPauseM...

2018/06/28 12:28
471
012. 深入JVM学习—G1收集器简介

概念 G1收集器(Garbage First)是从 JDK 1.7 u4 版本之后正式引入到Java的垃圾收集器,此类垃圾收集器主要应用在多CPU以及大内存的服务器环境下,这样可以极大地减少垃圾收集的停顿时间,以...

2018/06/27 15:42
58
010. 深入JVM学习—垃圾收集策略概览

新生代可用GC策略 1. 串行GC(Serial Copying) 算法:复制(Copying)清理算法; 操作步骤: 扫描年轻代中所有存活的对象; 使用Minor GC进行垃圾回收,同时将存活对象保存到“S0”或“S1”...

2018/06/25 17:41
99
017. JDK 内置命令工具

JDK 内置命令 官方地址(https://docs.oracle.com/javase/8/docs/technotes/tools/) 1. javap java 反编译工具,主要用户根据 Java 字节码文件反汇编为 Java 源代码文件。 javap <options> <c...

05/12 03:13
88

没有更多内容

加载失败,请刷新页面

返回顶部
顶部