JVM学习

定义:

JAVA Virtual Machine程序的运行环境(java二进制字节码的运行环境)。

好处:

  1. 一次编写,到处运行
  2. 自动内存管理,垃圾回收功能
  3. 数组下标越界,越界检查,抛异常
  4. 多态

比较:

jvm,jdk,jre

常见的jvm:

jvm是一种规范

内存结构:

  1. 程序计数器(寄存器)
  2. 虚拟机栈
  3. 本地方法栈
  4. 堆
  5. 方法区

程序计数器(寄存器):

JAVA源代码→jvm指令,二进制字节码→解释器→机器码→CPU

作用:

在一系列指令中,记住下一个jvm指令的执行地址。

寄存器是整个CPU中读写最快的部件。

特点:

1.线程私有;

2.不会存在内存溢出。

虚拟机栈:

定义:

栈-线程运行需要的内存空间。

栈帧-每个方法运行时需要的内存。

  1. 垃圾回收不涉及栈内存。栈内存由线程自动管理(方法调用入栈、执行完出栈),垃圾回收仅针对堆内存中不再被引用的对象。
  2. 栈内存不是分配越大越好。栈过大会减少进程可创建的线程数,且超出物理内存会触发页交换,反而降低性能。
  3. 方法内局部变量是线程安全的。局部变量存储在栈帧中,每个线程有独立栈,不存在多线程共享的情况。

hotspot

栈内存溢出:

线程运行诊断:

本地方法栈

堆:

方法区:

定义

组成

方法区内存溢出

运行时常量池

相关推荐
坤坤子吖3 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
蒸蒸yyyyzwd4 小时前
后端相关学习笔记。
笔记·学习
旖旎夜光5 小时前
【C++ 基础入门】C++ 多态(上):虚函数、重写、override/final 与抽象类
开发语言·c++·笔记·学习
橙橙笔记7 小时前
QT的学习第四部分
linux·qt·学习·音视频
叼烟扛炮8 小时前
Linux 学习笔记(五十四):内网穿透实战——用 frp 让外网访问你的私人电脑
linux·服务器·网络·笔记·学习
在猴站学算法8 小时前
(《统计学习方法》(第2版) 李航)第2章 感知机算法
学习·算法·机器学习·统计学习
旖旎夜光8 小时前
【C++ 基础入门】C++ 继承(上):概念、切片、隐藏、默认成员函数与友元
c++·笔记·学习
Godspeed Zhao8 小时前
从零开始学AI24——无监督学习之K均值
学习·机器学习
叼烟扛炮8 小时前
[LangChain] 学习笔记(05):提示词模板(Prompt)与少样本注入(Few-Shot)实战
linux·人工智能·笔记·学习·langchain·prompt
金銀銅鐵19 小时前
同一个 Hello World,Kotlin 和 Java 在字节码层面差在哪
jvm·后端·kotlin