JVM探究

JVM存在于操作系统上的JRE构建的环境当中:

什么是JRE?什么是JDK?

JVM存在的位置:

JVM哪里没有垃圾?调优的主要地方是哪?

类加载器

作用:加载Class文件

分类:1.虚拟机自带的加载器 2.启动器(根)记载器 3.扩展类加载器 4。应用程序加载器

双亲委派机制(保证安全)

双亲委派机制是 Java 类加载器在加载类时遵循的一种 "向上委托" 规则:当一个类加载器需要加载某个类时,它不会先自己尝试加载,而是先把这个任务委托给它的 "父加载器";如果父加载器也无法加载,再由自己尝试加载。

这里的 "双亲" 并非指 "父类" 和 "母类",而是一种层级关系 ------ 每个类加载器都有一个 "父加载器"(除了顶层加载器),形成类似 "树形" 的委托链条。

执行顺序 Boot --> EXC --> APP

执行过程:

1.类加载器收到类加载的请求 Application

2.将这个请求向上委托给弗雷加载器去完成,一直向上委托,直到启动类加载器

3.启动器检查是否能够加载当前这个类,能记载就结束,使用当前的加载器。否则抛出异常,通知子加载器进行加载

4.重复步骤三(最常见的错误是: 1.Class Not Found 2.null是Java调用不到)

沙箱安全机制

Java安全模型的核心就是Java沙箱

什么是沙箱?沙箱是限制程序运行的环境。主要限制系统资源访问。

沙箱机制就是将Java代码限定再虚拟机(JVM)特定的运行范围中,并且限制代码对本地系统资源访问,通过这样的措施来保证对代码的有效隔离,防止对本地系统造成破坏。

索引的Java程序运行都可以指定沙箱,可以定制安全策略。

沙箱的基本组件

1.字节码校验器:确保Java类文件遵循Java语言规范。这样可以帮助Java程序实现内存保护。但并不是所有的类文件都会经过字节码校验,比如核心类。

2.类装载器:其他类装载器在3个方面对Java沙箱起作用(双亲委派机制)

-防止恶意代码去干涉善意的代码

-守护了被新人的类库边界

-将代码归入保护域,确定了代码可以进行哪些操作

Native

native 方法是在 Java 中通过 native 关键字声明的,用于调用非 Java 语言,如 C/C++ 编写的代码。Java 可以通过 JNI(扩展Java的使用,融合不同的编程语言为Java所用),也就是 Java Native Interface 与底层系统、硬件设备、或者本地库进行交互。

native 用来修饰方法,用 native 声明的方法表示该方法的实现在外部定义,可以用任何语言去实现它,比如说 C/C++。 简单地讲,一个 native Method 就是一个 Java 调用非 Java 代码的接口。

native 语法:

  • ①、修饰方法的位置必须在返回类型之前,和其余的方法控制符前后关系不受限制。
  • ②、不能用 abstract 修饰,也没有方法体,也没有左右大括号。
  • ③、返回值可以是任意类型

JDK 8 的方法区变迁

  • 在 JDK 8 之前,方法区使用堆中的永久代(PermGen)实现。
  • 从 JDK 8 开始,永久代被移除,方法区由本地内存中的 元空间(Metaspace) 取代,解决了永久代的容量限制问题。

一个对象在内存中实例化的过程参考文章:Java对象在内存中实例化的过程_对象实例化内存图-CSDN博客

堆

JDK8以前的图

GC垃圾回收,主要是在伊甸园区和养老区

研究表明:99%的对象都是临时对象。

逻辑上存在,物理上不存在

dump文件

复制算法

标记清除算法

标记压缩算法

JMM

解决共享对象可见性这个问题:本质通过voliate关键字实现

相关推荐
daidaidaiyu4 小时前
ThingsBoard 集群的核心逻辑源码分析
java
我可能是个假开发5 小时前
FTP Unicode 文件名导致 `550` 的问题分析与解决方案
java·开发语言·spring
caoerzhong5 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
正在走向自律6 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
OnlineProxy6 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
【JAVA】玩家6 小时前
Spring核心原理全解析:从零到生产实战
java·后端·spring
Wang's Blog7 小时前
Java框架 SpringCloud 快速入门: 实现 Feign 最佳实践(抽取方式)
java·spring cloud
91刘仁德7 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
辻弋2017 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
MandalaO_O8 小时前
IDEA 开发(快捷键 + 调试 + 序列化)
java·ide·intellij-idea