随笔分类 -  JVM

摘要:10.垃圾回收相关概念System.gc() 的理解 在默认情况下,通过System.gc()者Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用(不 阅读全文
posted @ 2022-03-12 20:02 随遇而安== 阅读(65) 评论(0) 推荐(0)
摘要:9.垃圾回收概述与相关算法垃圾回收概述 Java 和 C++语言的区别,就在于垃圾收集技术和内存动态分配上,C++语言没有垃圾收集技术,需要程序员手动的收集。 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。 关于垃圾收集有三个经典问题: 哪些内存需要回收? 阅读全文
posted @ 2022-03-12 20:01 随遇而安== 阅读(69) 评论(0) 推荐(0)
摘要:8.StringTable(字符串常量池)一、String的基本特性 String:字符串,使用一对 “” 引起来表示 String s1 = "atguigu" ; // 字面量的定义方式 String s2 = new String("hello"); // new 对象的方式 String被声明为final的,不可被继承 String 阅读全文
posted @ 2022-03-06 09:44 随遇而安== 阅读(328) 评论(0) 推荐(2)
摘要:7.执行引擎一、执行引擎概述 1.1执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指 阅读全文
posted @ 2022-03-06 09:20 随遇而安== 阅读(240) 评论(0) 推荐(1)
摘要:6.对象的实例化内存布局与访问定位一、对象的实例化 大厂面试题 美团: 对象在JVM中是怎么存储的? 对象头信息里面有哪些东西? 蚂蚁金服: 二面:java对象头里有什么 1.1 对象创建的方式 new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法 Class的newInstance方 阅读全文
posted @ 2022-03-05 22:13 随遇而安== 阅读(275) 评论(0) 推荐(0)
摘要:5.方法区一、栈、堆、方法区的交互关系 从线程共享与否的角度来看 ThreadLocal:如何保证多个线程在并发环境下的安全性?典型场景就是数据库连接管理,以及会话管理。 栈、堆、方法区的交互关系 下面涉及了对象的访问定位 Person 类的 .class 信息存放在方法区中 person 变量存放在 Jav 阅读全文
posted @ 2022-03-05 21:08 随遇而安== 阅读(47) 评论(0) 推荐(0)
摘要:4.堆一、堆的核心概述 1.堆与进程 堆针对一个JVM进程来说是唯一的。也就是一个进程只有一个JVM实例,一个JVM实例中就有一个运行时数据区,一个运行时数据区只有一个堆和一个方法区。 但是进程包含多个线程,他们是共享同一堆空间的。 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Ja 阅读全文
posted @ 2022-03-05 16:20 随遇而安== 阅读(105) 评论(0) 推荐(1)
摘要:3.虚拟机栈一、虚拟机栈 1.简介 1.1虚拟机栈的出现背景 由于跨平台性的设计,Java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的【如果设计成基于寄存器的,耦合度高,性能会有所提升,因为可以对具体的CPU架构进行优化,但是跨平台性大大降低】。 优点是跨平台,指令集小,编译器容 阅读全文
posted @ 2022-03-05 14:25 随遇而安== 阅读(48) 评论(0) 推荐(0)
摘要:2.运行时数据区概述及线程1.前言 本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段 当我们通过前面的:类的加载 –> 验证 –> 准备 –> 解析 –> 初始化,这几个阶段完成后,就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区 类比一下也就是大厨做饭,我们把大厨后面的东西( 阅读全文
posted @ 2022-03-05 13:23 随遇而安== 阅读(646) 评论(0) 推荐(0)
摘要:1.类加载子系统一、作用: 1.加载class文件,class文件开头具有特定的文件标识 2.只负责加载,能否运行由Execution Engine决定 3.信息存放位置在方法区 二、ClassLoader(类加载器) 1.classfile存放在本地内存上,执行时需要加载到JVM中,根据这个文件实例出n个一模一样 阅读全文
posted @ 2022-03-04 12:15 随遇而安== 阅读(218) 评论(0) 推荐(0)