ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JMM

2022-05-09 00:34:18  阅读:197  来源: 互联网

标签:Java 堆区 XX 内存 JVM JMM java


 

 

执行引擎

 

CodeCache 相对于其他内存(可读可写,可执行)

 

操作系统内存模型和JVM内存模型之间的关系;

 

操作系统内存模型

      堆区

           JVM内存模型,其实就是从堆区切了一块大内存下来(内存池)

             堆区

                   方法区(jdk7)

             虚拟机栈

       本地方法栈

                 程序计数器

            方法区(jdk8)

-----------------------

       栈

       全局区

       代码块

 

IDEA点执行main函数:先javac编译,在java执行

 

JVM启动

JVM初始化

 

HSDB 窥探JVM内部 (类比HSDIS)

 

oop-klass模型

klass模型:Java的类在JVM中的存在形式

因为openJDK是用汇编、c、c++写的,JVM不认识java类的,需要 Java类->C++类,在JVM内部流通

 

类加载器

  七个阶段:

  类何时被加载,何时被解析

  初始化到底是什么

  

  三个类加载器

  双亲委派

  SPI

  自定义类加载器

 

字节码文件(.class)加载入JVM中是如何存储的?

 

  字节流:ClassFileStream* cfs = stream();

  基于《Java虚拟机规范》对这个stream进行解析

  1、InstanceKlass存储java类的元信息(方法区,不是Class对象)

  2、InstanceMirrorKlass镜像类(堆区,Class对象)

   静态属性,在堆区

 

 

方法区:Java虚拟机规范(接口)

 

永久代

元空间:方法区在JVM中的具体实现(接口实现类)

 

 

 

1、永久代:jdk7以前方法区的具体实现,JVM内存模型的堆区(不是操作系统的堆区)

 

 

2、元空间:jdk8及以后方法区的具体实现,在操作系统的堆区

大小是多少:MetaspaceSize   MaxMetespaceSize

java -XX:PrintFlagFinal -version | grep Metaspace

2.1、JVM调优参数三种类型:

-XX:key=val

-XX:+/-param

-Xmx -Xms     调优堆的 (eg:-Xmx10m -Xms10m         设置10m)

 

OOM

  eg:模拟元空间OOM的程序: 利用CGLib库,

 

如何调优:

-XX:MetaspaceSize=20m 

-XX:MaxMetespaceSize=20m

元空间的调优规则

 

VisualVM是如何监控其他Java程序吗?  java agent(java调试器的底层实现原理)

 

标签:Java,堆区,XX,内存,JVM,JMM,java
来源: https://www.cnblogs.com/farewells/p/16247653.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有