随笔分类 -  JVM

JVM运行时参数
摘要:JVM参数选项类型 类型一:标准参数选项 特点 比较稳定,后续版本基本不会变化。以 " - " 开头。 选项详情 运行java或者java -help可以看到所有的标准选项 类型二:-X参数选项 特点 非标准化参数,功能还是比较稳定的,但官方说后续版本可能会变更。以 " -X " 开头。 选项详情
43
0
0
JVM监控及诊断的GUI工具
摘要:VisualVM:多合一故障处理工具 VisualVM(All-in-One Java Troubleshooting Tool)是功能最强大的运行监视和故障处理程序之一,曾经在很长一段时间内是Oracle官方主力发展的虚拟机故障处理工具。Oracle曾在VisualVM的软件说明中写上了“All-
0
0
0
JVM命令行工具
摘要:JPS:虚拟机进程状况工具 jps(Java Process Status):显式指定系统内所有的HotSpot虚拟机进程(查看虚拟机进程信息),可用于查询正在运行的虚拟机进程。对于本地虚拟机进程来说,进程的本地虚拟机ID与操作系统的进程ID是一致的,是唯一的。 JPS命令格式 jps [optio
130
0
0
11.4垃圾回收器
摘要:1.GC分类与性能指标 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今衍生出众多的GC版本。 从不同角度分析垃圾收集器,可以将GC分为不同的类型。 线程数分类 按线程数分,可以分为串行垃圾回收
64
0
0
11.3 垃圾回收相关概念
摘要:11.3.1 System.gc()的理解 在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System.gc()调用附带一个免责声明,无法保证对垃圾收集
52
0
0
11.垃圾回收相关算法
摘要:11.1 垃圾回收概述 1. 什么是垃圾 垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。 如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。 2. 为什么需要GC 对于高级语言
63
0
0
JVM架构图
摘要:JVM架构简图 JVM架构图
81
0
0
10.字符串常量池(String Table)
摘要:10.字符串常量池(String Table) String的基本特性 String:字符串,使用一对" "引起来表示。 String s1 = "hguo"; // 字面量的定义方式 String s2 = new String("hello"); String类声明为final,不可被继承。 S
149
0
0
8.直接内存(了解)
摘要:8.直接内存(了解) 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存空间。 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 通常,访问直接内存的速度会优于Java堆,即读写性能高。 因
49
0
0
9.执行引擎
摘要:9.执行引擎 1.执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 "虚拟机"是一个相对于"物理机"的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与
105
0
0
7.对象实例化、内存布局与访问定位
摘要:7.对象实例化、内存布局与访问定位 7.1对象的实例化 创建对象步骤: 1.判读对象的类是否加载、链接、初始化: 虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。(即判断类元信息是否
33
0
0
方法区
摘要:6.方法区 6.1栈、堆、方法区的交互关系 6.2方法区的理解 《Java虚拟机规范》中明确说明:"尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩"。但对于HotSpot JVM而言,方法区还有一个别名叫Non-Heap(非堆),目的就是要和堆分开。
90
0
0
5.9堆是分配对象的唯一选择吗
摘要:5.9堆是分配对象的唯一选择吗 在《深入理解Java虚拟机》中关于Java堆内存有这样的一段描述: 随着JIT编译期的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象都分配到堆上也逐渐变得不那么"绝对"了。 在Java虚拟机中,对象是在Java堆中分配内存的,
45
0
0
5.8堆空间的参数设置
摘要:5.8堆空间的参数设置 官网说明:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html -XX:+PrintFlagsInitial 查看所有的参数的默认初始值 -XX:+PrintFlagsFinal 查看所有的参
55
0
0
TLAB线程私有缓存区
摘要:TLAB线程私有缓存区 为什么有TLAB(Thread Local Allocation Buffer)? 堆区是线程共享区域,任何线程都可以访问到堆区中的共享数据。 由于对象实例的创建在JVM中非常频繁,因此在并发环境下从堆区中划分内存空间是线程不安全的。 为避免多个线程操作同一地址,需要使用加锁
55
0
0
5.5MinorGC、MajorGC、FullGC
摘要:5.5MinorGC、MajorGC、FullGC JVM在进行GC时,并非每次都对上面三个内存区域一起回收,大部分时候回收都是指新生代。 针对HotSpot VM的实现,它里面的GC按照回收区又分为两大种类型:一种是部分收集(Partial GC),一种是整堆收集(Full GC)。 部分收集:不
95
0
0
5.6堆空间分代思想&5.7内存分配策略
摘要:5.6堆空间分代思想 为什么需要把Java堆分代?不分代就不能正常工作吗? 不同对象的生命周期不同。70% - 99%的对象是临时对象。 新生代:有Eden、两块大小相同的Survivor(又称from/to,s0/s1)构成,to总为空。 老年代:存放新生代中经历多次GC仍然存活的对象。 5.7内
28
0
0
5.4图解对象分配过程
摘要:5.4图解对象分配过程 对象分配过程概述: 1.new的对象放在伊甸园区,此区大小有限制。 2.当伊甸园区的空间填满时,程序有需要创建对象,JVM的垃圾回收器将对伊甸园区进行垃圾回收(Minor GC),将伊甸园区中的不再被其他对象所引用的对象进行销毁。再加载新的对象放在伊甸园区。 3.然后将伊甸园
157
0
0
5.3年轻代与老年代
摘要:5.3年轻代与老年代 存储在JVM中的Java对象可以被划分为两类: 一类是生命周期较短的瞬时对象,这类对象的创建和消亡都非常迅速 另一类对象的生命周期却非常长,在某些极端的情况下还能够与JVM的生命周期保持一致。 Java堆区进一步细分的话,可以划分为年轻代(YoungGen)和老年代(OldGe
190
0
0
5.1堆的核心概述&设置堆内存大小与OOM
摘要:5.堆 5.1堆的核心概述 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 堆内存的大小是可以调节的。 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该
105
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起