摘要: 222 阅读全文
posted @ 2023-11-12 00:50 峡谷挨打记 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 11 阅读全文
posted @ 2023-11-12 00:49 峡谷挨打记 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 正常情况下,讲完执行引擎,就可以讲垃圾回收了。但是这里讲一下String,这在面试中经常遇到。 1、String的基本特性 String:字符串,使用一对 “” 引起来表示 String被声明为final的,不可被继承 String实现了Serializable接口:表示字符串是支持序列化的。实现了 阅读全文
posted @ 2021-03-09 15:58 峡谷挨打记 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 1、执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一。 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构 阅读全文
posted @ 2021-03-08 20:11 峡谷挨打记 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 这一章知识非常少,我们为什么要讲直接内存呢?是因为在jdk8的时候引入了元空间,而元空间使用的就是直接内存。 直接内存概述 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。 直接内存是在Java堆外的、直接向系统申请的内存区间。 来源于NIO(其实在jdk1.4 阅读全文
posted @ 2021-03-08 17:11 峡谷挨打记 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 上面我们已经讲完了运行时数据区。但道理可以直接讲执行引擎了,但是呢?为了面试(功利上讲),我们再讲下这一节。 从知识体系上讲。我们在写程序时要直面栈、堆、方法区。如果是创建对象,创建的对象是在堆中,对应的Class文件是在方法区中,如果是方法中的局部变量,则该变量是在栈中。那么这三者具体是什么关系呢 阅读全文
posted @ 2021-03-08 16:39 峡谷挨打记 阅读(74) 评论(0) 推荐(0) 编辑
摘要: 1、栈、堆、方法区的交互关系 从线程共享与否的角度来看 ThreadLocal:如何保证多个线程在并发环境下的安全性?典型场景就是数据库连接管理,以及会话管理。 堆和元空间:会有OOM和GC 虚拟机栈和本地方法栈会有SOF 程序计数器不会有异常,也不会有GC。 下图设计到了对象的访问定位 Perso 阅读全文
posted @ 2021-03-04 16:48 峡谷挨打记 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 1、堆的核心概述 这里的堆和方法区都是用红色显示,一方面是说明其重要,另一方面呢?一个Java程序运行,对应着一个进程,也就对应着一个JVM实例(Runtime实例,这个类也是用管道单例模式,饿汉式),对于一个JVM实例,方法区和堆是独一份的。一个进程里面有多个线程,这些线程共享堆空间。 一个JVM 阅读全文
posted @ 2021-03-02 19:02 峡谷挨打记 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 本地方法栈 Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用(这一句话一说,基本上本章就结束了)。 本地方法栈,也是线程私有的。 允许被实现成固定或者是可动态扩展的内存大小(在内存溢出方面和虚拟机栈相同) 如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟 阅读全文
posted @ 2021-03-02 15:22 峡谷挨打记 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 我们前面讲过了运行时数据区的PC寄存器和虚拟机栈。现在先跳出运行时数据区,讲一下本地方法接口。 什么是本地方法? 简单地讲,一个Native Method是一个Java调用非Java代码的接囗一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非 阅读全文
posted @ 2021-03-02 14:57 峡谷挨打记 阅读(53) 评论(0) 推荐(0) 编辑