zoukankan      html  css  js  c++  java
  • java内存相关

    运行时数据区域:

    1、程序计数器:线程执行时的字节码行号指示器。

    2、java虚拟机栈(Stack,获者称为方法栈):java方法执行的内存模型。调用方法的时候,就会创建一个虚拟机栈,用于存储局部变量表,操作数栈,动态链接,方法出口等信息。

    3、本地方法栈:存放需要调用到的Native方法的相应数据。

    以上三者是线程私有的。

    下面的两个是线程共享的。

    4、java堆(Heap):用于存放实例对象,数组。

    5、方法区:用于存放被虚拟机加载的类信息,常量,静态变量,即时编译后的代码数据。

    永久代,方法区,元空间:

      方法区是虚拟机的规范,HotSpot用方法区来表示永久代。

      JDK8中:元空间属于本地内存;存储内容不同,元空间存储类的元信息,静态变量和常量池等并入堆中。

     

    基于分代的思想进行划分:

    堆(Heap)的细分:新生代,老年代。

      其中,新生代又分为:Eden,From Servivor,To Servivor。

    方法区:永久代

      

    分代思想的具体应用:

      1、所有的对象,出生在Eden区。

      2、eden:from servivor:to servivor = 8 : 1 : 1

      3、堆内存不够,发生GC。将存活的对象拷贝到from servivor区域,对象在servivor中每熬过一次GC(from , to 这两个轮流用),就增加一岁。当增加到一定的岁数后,就将对象移到老年代。

      4、新生代发生的GC为Minor GC。发生在老年代GC为Full GC。做一次 Full GC 要比进行一次 Minor GC 的时间更长(10倍)。

    内存的分配以及GC:

      1、eden创建对象。

      2、当eden内存不足时,触发 Minor GC, 将eden中的存活对象,复制到from servivor。

      3、当eden内存又不足时,触发 Minor GC,将eden、from servivor中存活的对象,复制到to servivor中。

      4、当eden内存又不足时,触发 Minor GC ,将eden、to servivor中存活的对象,复制到from servivor中。

      5、在步骤3、4中,执行复制时,会判断对象是否达到进入老年代的条件,如果符合条件,则拷贝到老年代中。

      6、如果老年代空间不足,则发生Full GC 。

    逃逸分析与栈上分配:

      1、如果对象仅在方法体内使用,不进行传递,则该对象就分配到栈上。

    java内存模型:

    为何需要java内存模型(Java Memory Model,JMM):

      用于屏蔽各种操作系统和硬件之间的内存访问差异,使得java能够在各种平台下能够达到一致的运行结果。

    java内存模型(虚拟机内存):

      1、主内存:所有的变量都存储在主内存。(线程私有的变量,不存在主内存中)

      2、工作内存:线程的工作内存保存了该线程使用到的变量的主内存副本拷贝。

      两者的工作方式:

        线程对变量的所有操作(读取,赋值)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程中的工作内存,相互独立,无法直接访问。线程见变量的传递都需要通过主内存来完成。

        线程 1<--(直接操作)--> 工作内存  <--(读写)--> 主内存

        线程 2<--(直接操作)--> 工作内存  <--(读写)--> 主内存

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 高精度乘法
    Java实现 蓝桥杯VIP 算法提高 现代诗如蚯蚓
    Java实现 蓝桥杯VIP 算法提高 现代诗如蚯蚓
    Java实现 蓝桥杯VIP 算法提高 现代诗如蚯蚓
    Java实现 蓝桥杯VIP 算法提高 现代诗如蚯蚓
    ddd
  • 原文地址:https://www.cnblogs.com/chen--biao/p/9795389.html
Copyright © 2011-2022 走看看