zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Python使用SMTP模块、email模块发送邮件
    harbor搭建及使用
    ELK搭建-windows
    ELK技术栈之-Logstash详解
    【leetcode】1078. Occurrences After Bigram
    【leetcode】1073. Adding Two Negabinary Numbers
    【leetcode】1071. Greatest Common Divisor of Strings
    【leetcode】449. Serialize and Deserialize BST
    【leetcode】1039. Minimum Score Triangulation of Polygon
    【leetcode】486. Predict the Winner
  • 原文地址:https://www.cnblogs.com/cxli99/p/14061712.html
Copyright © 2011-2022 走看看