IT评测·应用市场-qidao123.com

标题: 学习笔记-JVM [打印本页]

作者: 宁睿    时间: 2023-5-25 11:21
标题: 学习笔记-JVM
JVM的位置

JVM是运行在操作系统上的虚拟机,存在于JRE当中
JVM的类型

JVM的体系结构




本地方法接口JNI

类加载器

ClassLoader
用于加载类
分类

除此之外,用户也能自定义类加载器,用来加载指定路径的class类
双亲委派机制

双亲委派机制的作用:

类加载的过程

程序计数器



栈中存储的是什么


局部变量表

操作数栈

动态连接

指向运行时常量池中该栈帧所属方法引用
返回地址

可能出现的异常

设置栈参数

jstack命令



被所有线程共享
主要存储
GC就是在堆上收集对象所占用的内存空间
堆的空间结构


堆内存诊断

方法区

被所有线程共享
主要存储
永久区

JDK1.7及之前,方法区的具体实现是PermSpace永久区
MetaSpace

JDK1.8后,使用MetaSpace元空间替代PermSpace
元空间不在JVM中,而是使用本地内存
有两个参数:
使用常量池的优点

Integer常量池
  1. public void TestIntegerCache()
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         Integer i1 = new Integer(66);
  6.         Integer i2 = new Integer(66);
  7.         Integer i3 = 66;
  8.         Integer i4 = 66;
  9.         Integer i5 = 150;
  10.         Integer i6 = 150;
  11.         System.out.println(i1 == i2);//false
  12.         System.out.println(i3 == i4);//true
  13.         System.out.println(i5 == i6);//false
  14.     }
  15. }
复制代码
<ul>为什么i1 == i2为false
为什么i3 == i4为true
<ul>当Integer i3 = 66时,其实进行了一步装箱操作
通过Integer.valueOf()将66装箱成Integer
[code]public static Integer valueOf(int i) {        if (i >= IntegerCache.low && i




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4