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

  • 相关阅读:
    网站优化,dns预解析,解析缓存
    dos命名重启或关闭远程服务器
    IIS 常见问题集记录
    EF 基础提供程序在 Open 上失败
    flexbox学习
    svn post-commit 同步
    备份
    log4net 2.0.4有问题,AdoNetAppender会报错
    signalr 配置错误跟踪
    Facebook的Web开发三板斧:React.js、Relay和GraphQL
  • 原文地址:https://www.cnblogs.com/cxli99/p/14061712.html
Copyright © 2011-2022 走看看