JVM知识点总结

<<Java虚拟机规范>>
堆:

Java堆可以处于物理上不连续的内存空间中,但在逻辑上应该被视为连续的。
所有对象实例及数组都应该堆上分配。注意:虽然规范是这样的,由于及时编技术的进步,尤其
逃逸分析技术的日渐强大,栈上分配、表量替换。
Java堆既可以被实现成固定大小的,也可以是可扩展的,不过当前主流的Java虚拟机都是按照可扩展来实现的(通过参数-Xmx和-Xms设定)。如果在Java堆中没有内存完成实例分配,并且堆也无法再扩展时,Java虚拟机将会抛出OutOfMemoryError异常。
———————————————————————————————————————————

栈:
 HotSpot虚拟机的栈容量是不可以动态扩展的

————————————————————————————————————————

方法区

方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虽然《Java虚拟机规范》中把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫作“非堆”(Non-Heap),目的是与Java堆区分开来。
——————————————————————————————————————————

具体实现
———————————————————————————————————————————
类什么时候会被加载
1.创建类实例
2.使用类的静态变量或静态方法
3.使用反射机制访问类
4.JVM启动时,自动加载的基础类
Java中的类加载其实是延迟加载的,除了一些基础的类外。都是在使用类时才会进行加载。

———————————————————————————————————————————

堆和栈的区别

存储位置不同
存储的内容不同
抛出的异常不同
栈的存储速度比堆块,执行效率较高
——————————————————————————————————————

Java虚拟机栈:线程私有,方法的每次调用都会创建一个栈帧,栈帧主要包含:
局部变量表(保存局部变量)
操作数栈:主要用来保存计算结果的中间的中间结果,同时作为计算过程中变量临时的存储空间
动态链接:如果被调用的方法在编译期无法被确定下来,只能够在程序运行期将调用的方法的符号转换为直接引用,由于这种引用转换过程具备动态性,因此也被称之为动态链接。
方法出口等信息。当方法执行完毕之后,这个栈帧就会别弹出,变量最用域就会结束。

堆:内存中最大的一块内存区域,几乎所有实例的分配都在此。注意 :新生代和老年代等只是某一类虚拟机所有的,并不在jvm规范中存在

相关推荐

  1. JVM知识总结

    2024-01-22 14:54:01       36 阅读
  2. jvm基础知识总结

    2024-01-22 14:54:01       36 阅读
  3. JVM知识

    2024-01-22 14:54:01       39 阅读
  4. JVM知识——安全

    2024-01-22 14:54:01       30 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-22 14:54:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-22 14:54:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-22 14:54:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-22 14:54:01       18 阅读

热门阅读

  1. spring mvc的HandlerInterceptor的原理以及使用场景

    2024-01-22 14:54:01       34 阅读
  2. Android:RecyclerView自由拖动item

    2024-01-22 14:54:01       36 阅读
  3. Ubuntu 22报错:PAM unable to dlopen(pam_tally2.so)

    2024-01-22 14:54:01       35 阅读
  4. QT 浏览器组件使用

    2024-01-22 14:54:01       34 阅读
  5. 二、docker的常用命令(持续补充img)

    2024-01-22 14:54:01       28 阅读
  6. SpringMVC使用步驟

    2024-01-22 14:54:01       32 阅读
  7. windows11+GPU1060安装强化学习环境之pytorch

    2024-01-22 14:54:01       33 阅读
  8. 【shell编程入门】正则表达式

    2024-01-22 14:54:01       35 阅读
  9. elemeentui el-table封装

    2024-01-22 14:54:01       28 阅读
  10. -交换机-

    2024-01-22 14:54:01       40 阅读