加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮安站长网 (https://www.0517zz.cn/)- 运营、云管理、经验、智能边缘、云硬盘!
当前位置: 首页 > 运营 > 正文

将物联网技术与收入过程相结合来释放收入

发布时间:2021-01-30 17:55:01 所属栏目:运营 来源:互联网
导读:JDK 1.8 JVM 的内存结构主要由三大块组成:堆内存、元空间和栈,Java 堆是内存空间占据最大的一块区域。 Java 堆,由年轻代和年老代组成,分别占据1/3和2/3。 而年轻代又分为三部分,「Eden」、「From Survivor」、「To Survivor」,占据比例为8:1:1,可调。
  • JDK 1.8 JVM 的内存结构主要由三大块组成:堆内存、元空间和栈,Java 堆是内存空间占据最大的一块区域。
  • Java 堆,由年轻代和年老代组成,分别占据1/3和2/3。
  • 而年轻代又分为三部分,「Eden」、「From Survivor」、「To Survivor」,占据比例为8:1:1,可调。
  • 另外这里我们特意画出了元空间,也就是直接内存区域。在 JDK 1.8 之后就不在堆上分配方法区了。
  • 「元空间」从虚拟机Java堆中转移到本地内存,默认情况下,元空间的大小仅受本地内存的限制,说白了也就是以后不会因为永久代空间不够而抛出OOM异常出现了。jdk1.8以前版本的 class和JAR包数据存储在 PermGen下面 ,PermGen 大小是固定的,而且项目之间无法共用,公有的 class,所以比较容易出现OOM异常。
  • 升级 JDK 1.8后,元空间配置参数,-XX:MetaspaceSize=512M XX:MaxMetaspaceSize=1024M。教你个小技巧通过jps、jinfo查看元空间,如下:

整个这段流程,就是方法的调用和返回。在调用过程申请了操作数栈的深度和局部变量的大小。

以及相应的信息从各个区域获取并操作,其实也就是入栈和出栈的过程。

3. 本地方法栈

本地方法栈与Java虚拟机栈作用类似,唯一不同的就是本地方法栈执行的是Native方法,而虚拟机栈是为JVM执行Java方法服务的。

另外,与 Java 虚拟机栈一样,本地方法栈也会抛出 StackOverflowError 和 OutOfMemoryError 异常。

JDK1.8 HotSpot虚拟机直接就把本地方法栈和虚拟机栈合二为一。

关于本地方法栈在以上的例子已经涉及了这部分内容,这里就不在赘述了。

4. 堆和元空间
 

这些行号每一个都会对应一条需要执行的字节码指令,是压栈还是弹出或是执行计算。

之所以说是线程私有的,因为如果不是私有的,那么整个计算过程最终的结果也将错误。

2. Java虚拟机栈

  • 每一个方法在执行的同时,都会创建出一个栈帧,用于存放局部变量表、操作数栈、动态链接、方法出口、线程等信息。
  • 方法从调用到执行完成,都对应着栈帧从虚拟机中入栈和出栈的过程。
  • 最终,栈帧会随着方法的创建到结束而销毁。

可能这么只从定义看上去仍然没有什么感觉,我们再找一个例子。

这是一个关于斐波那契数列(Fibonacci sequence)求值的例子,我们通过斐波那契数列在虚拟机中的执行过程,来体会Java虚拟机栈的用途。

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

(编辑:淮安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读