• java虚拟机


    一、jdkjrejvm的关系

           

      jdk、jre、jvm之间的关系:https://blog.csdn.net/weixin_43878966/article/details/102574048

      jre = jvm+类库

    二、JVM内存区域

           

      虚拟机栈:在JVM运行过程中存储当前线程运行方法所需的数据、指令、返回地址。缺省大小为1M,参数-Xss。在java方法被调用的时候,会创建一个栈帧,进行入栈和出栈,栈帧包括:局部变量表、操作数栈、动态连接、返回地址。

      程序计数器:当前线程执行的字节码行号指示器,如果遇到本地方法(native方法),就不需要记录了,是一块很小的内存空间,也是JVM中唯一不会OOM的内存区域。

      本地方法栈:本地方法栈用于管理本地方法的调用,服务对象是native方法。

      方法区:JDK1.7称为永久代,JDK1.8及以后使用元空间来实现方法区,它存储了每一个类的结构信息,如运行时常量池(是每一个类或接口的常量池的运行时表示形式),字段和方法数据,构造函数和普通方法的字节码内容,还包括一些类、实例、接口初始化时用到的特殊方法。

      堆:堆是JVM上最大的内存区域,存储java对象,而对象的引用存在虚拟机栈的局部变量表中,在方法体内声明了对象并且不会逃逸出方法,它就会在栈上分配,其他情况在堆上分配,参数-Xms。

      直接内存:也叫堆外内存,操作系统分配JVM内存之后剩余的内存就是堆外内存,不是虚拟机运行时数据区的一部分,也不是java虚拟机规范中定义的内存区域,在java堆内可以用directByteBuffer 对象直接引用并操作,参数-XX:MaxDirectMemorySize。

    ==================================================================================================

      JVM参数官方文档(JDK1.8):https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

      jdk1.7hashmap死循环:https://blog.csdn.net/maohoo/article/details/81531925

  • 相关阅读:
    浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序
    DOM扩展:DOM API的进一步增强[总结篇-下]
    DOM扩展:DOM API的进一步增强[总结篇-上]
    Network 第九篇
    Network 第八篇 – 动态路由-OSPF
    Network 第七篇
    Network 第六篇
    Network 第五篇
    Network 第四篇
    Network 第三篇
  • 原文地址:https://www.cnblogs.com/cxli99/p/14061712.html
Copyright © 2020-2023  润新知