02-内存模型深度剖析

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。02-内存模型深度剖析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

JDK体系结构

在这里插入图片描述
其实这个图的话,我觉得要讲的东西很多,但是又不知道怎么讲,因为每一个JAVA程序员入门的时候,应该都会看到这个图。
首先说一下
他们之间的关系吧。
JDK>JRE>JVM(>的意思是包含的关系)

  • JDK就是包括我们的java运行环境,还有java的一些api和工具。如果要编写java代码,就得安装JDK
  • JRE就是我们运行java代码的环境
  • JVM就是由c++创建的一个虚拟机,用来执行我们的java编译后的代码,这个就是java跨平台的主要原因

Java语言的跨平台特性

在这里插入图片描述
其实从这个已经很清楚的可以看到,JAVA跨平台,主要就是JVM的功劳,不同的操作系统会创建不同的JVM,而我们的代码都是通过JVM去执行的,那么它就是跨平台的主要原因。

JVM整体结构及内存模型

首先根据自己知道的知识,认真的看一下这个图,此图显示的是jvm的内存模型,它和java的内存模型不是一个东西,java的内存模型是JMM,后期会写到
在这里插入图片描述
一个JVM包括了三大部分:

  • 类装载系统

  • 运行时数据区(内存模型)

  • 字节码执行引擎
    在这里,主要说一下JVM的内存模型

  • 本地方法栈:它主要实现的是java底层的一些方法,比如说线程的start方法,前期使用了通过JAVA去调用别的语言,比如说C或者C++的一些方法,现在程序员一般都不会动或者修改这些方法,作为了解就可以。

  • 栈: 每一个方法执行的时候都会创建一个栈帧,如上图所示,每一个栈帧里面包含四个:局部变量表,操作数栈,动态链接,方法出口。
    操作数栈就和它的名字一样,是用来操作的,比如有一个变量a=1;b=2;
    执行a+b=3;那么首先通过操作数栈进行相加,把结果3放入局部变量表给了一个c=3;与之对应。
    动态链接就是比如有一个静态变量,这个静态变量是一个对象,对象大多数是存在堆里面的,而动态连接里面存放的就是堆里面对应的对象的地址。
    方法出口就是每一个方法执行完毕都会进行下一行代码。

  • :主要用来存放对象的地方,里面又分为年轻代和老年代。
    年轻代里面又分为Eden和s0,s1。
    此处会经常发生GC,年轻代发生的叫做minor GC也就是YGC,而老年一般发生的就是FGC,发生OOM的时候,主要就是年轻代和老年代出现了问题,后期会讲到怎么去处理以及各种垃圾回收算法。

  • 方法区:主要存放一些常量,静态变量和一些类的信息。

  • 程序计数器: 它的作用主要就是为了解决cpu调度的问题。

元空间的JVM参数有两个:

-XX:MaxMetaspaceSize: 设置元空间最大值, 默认是-1, 即不限制, 或者说只受限于本地内存大小。

-XX:MetaspaceSize: 指定元空间触发Fullgc的初始阈值(元空间无固定初始大小), 以字节为单位,默认是21M,达到该值就会触发 full gc进行类型卸载, 同时收集器会对该值进行调整: 如果释放了大量的空间, 就适当降低该值; 如果释放了很少的空间, 那么在不超 过-XX:MaxMetaspaceSize(如果设置了的话) 的情况下, 适当提高该值。这个跟早期jdk版本的-XX:PermSize参数意思不一样。
由于调整元空间的大小需要Full GC,这是非常昂贵的操作,如果应用在启动的时候发生大量Full GC,通常都是由于永久代或元空间发生 了大小调整,基于这种情况,一般建议在JVM参数中将MetaspaceSize和MaxMetaspaceSize设置成一样的值,并设置得比初始值要大, 对于8G物理内存的机器来说,一般我会将这两个值都设置为256M。

java ‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐jar microservice‐eurek a‐server.jar

好了,下期见。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/159000.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!