文章分类 -  jvm相关

摘要:其他 finalize()方法最终判断对象是否存活 即使在可达性分析算法中不可达的对象,也并非是“非死不可"的,这时候它们暂时处于缓刑阶段,要真正宣告一个对象死亡,至少要经历再次标记过程。 标记的前提是对象在进行可达性分析后发现没有与 GC Roots相连接的引用链。 1、第一次标记并进行一次筛选 阅读全文
posted @ 2021-10-26 20:38 程序员清风 阅读(22) 评论(0) 推荐(0) 编辑
摘要:十、垃圾回收器 GC分类与性能指标 分类 按线程数分,可以分为串行垃圾回收器和并行垃圾回收器。 串行回收指的是同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时工作线程被暂停,直至垃圾收集工作结束。 在诸如单CPU处理或者较小的引用内存等硬件平台不是特别优越的场合,串行回收器的性能表现可以超过 阅读全文
posted @ 2021-10-26 20:36 程序员清风 阅读(489) 评论(0) 推荐(0) 编辑
摘要:九、垃圾回收相关概念 System.gc()的理解 在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用,会显示触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。System.gc()调用附带一个免责声明,无法保证对垃圾收 阅读全文
posted @ 2021-10-26 20:23 程序员清风 阅读(58) 评论(0) 推荐(0) 编辑
摘要:八、垃圾回收算法 垃圾标记阶段:对象存活判断 在堆中存放在几乎所有逇Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是承诺或对象,哪些是已经死亡对象。只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉器锁占用的内存空间,因此这个过程我们称之为垃圾标记阶段。 那么JVM究竟 阅读全文
posted @ 2021-10-26 20:20 程序员清风 阅读(358) 评论(0) 推荐(0) 编辑
摘要:七、垃圾回收——概述 什么是垃圾? 垃圾收集,不是Java语言的半生产物,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 关于垃圾收集的三个问题: 那些内存需要回收? 什么时候回收? 如何回收? 垃圾收集机制四Java的招牌能力,极大地提高了开发效率。垃圾收集几乎成为现代语言的标配,进 阅读全文
posted @ 2021-10-26 20:16 程序员清风 阅读(369) 评论(0) 推荐(0) 编辑
摘要:先看下面代码 public class StringNewTest { public static void main(String[] args) { String str = new String("a")+new String("b"); } } 上面代码创建了几个对象? 我们来看一下字节码 阅读全文
posted @ 2021-10-26 20:13 程序员清风 阅读(28) 评论(0) 推荐(0) 编辑
摘要:概述 执行引擎是Java虚拟机核心的组成部分之一 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,二虚拟机的执行引擎则是由软件执行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行 阅读全文
posted @ 2021-10-26 20:09 程序员清风 阅读(63) 评论(0) 推荐(0) 编辑
摘要:介绍 Java虚拟机对class文件采用的是按需加载的方式,也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加载某个类的class文件时,Java虚拟机采用的是双亲委派模式,即把请求交由父类处理,他是一种任务委派模式。 工作原理 在看工作原理前,我们先来看看一个案例 阅读全文
posted @ 2021-10-26 20:04 程序员清风 阅读(2283) 评论(0) 推荐(0) 编辑
摘要:类加载子系统作用 1、类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识:CA FE BA BE 2、ClassLoader只负责class文件的加载 ,至于它是否可以运行,则有ExecutionEngine(执行引擎)决定 3、加载的类信息存放于一块 阅读全文
posted @ 2021-10-26 19:55 程序员清风 阅读(242) 评论(0) 推荐(0) 编辑
摘要:首先来看看大厂面试题 美团: 对象在JVM中是怎么存储的? 对象头信息里面有那些东西? 蚂蚁金服: 二面:java对象头里面有什么? 我们带着上面这些问题来学习 对象的实例化 创建对象的方式 new 最常见的方式 变形1:单例模式下的获取对象的xxx静态方法 变形2:XxxBuilder/XxxFa 阅读全文
posted @ 2021-10-26 19:39 程序员清风 阅读(86) 评论(0) 推荐(0) 编辑
摘要:Java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些这是与线程意义对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁 灰色部分为单线程私有,红色的为多个线程共享的。即: 每个线程:独立包括程序计数器、栈、本地栈 ( 阅读全文
posted @ 2021-10-26 18:35 程序员清风 阅读(138) 评论(0) 推荐(0) 编辑

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