• JVM笔记(虚拟机各内存的介绍)


                                JVM笔记

         java代码执行分为两部分:javac编译     java执行

        代码并不是由上往下执行的,会经过编译期重排序进行优化,存在依赖关系的代码不会被重排序,保证了代码最终执行结果的正确性!

         java虚拟机规范,运行时数据区通常包括:

                 程序计数器(Program Counter Register)

                 java栈(VM  Stack)

                 本地方法栈(Native Method Stack)

                 方法区(Method  Area)

                 堆(Heap)

     

        * 不同的虚拟机厂商有不同的实现方式

     

    程序计数器:

        程序计数器是用来指示执行哪条指令的,每个线程都需要有自己独立的程序计数器,并且不能互相被干扰,否则会影响正常的执行顺序。

     

    java栈

        也就是我们常说的栈,函数中定义的基本类型变量,对象的引用变量都在函数的栈内存中分配,栈内存中的数据,没有默认初始值,需要手动设置。

     

    本地方法栈

        本地方法栈和java栈的作用和原理非常相似,区别只不过是java栈是为执行java方法服务的,而本地方法栈则是为执行本地方法服务的

     

    方法区

        方法区在jvm中也是一个非常重要的区域,它与堆一样,是被线程共享的区域,在方法区中,存储了每个类的信息(包含类的名称,方法信息,字段信息)、静态变量、常量以及编译器编译后的代码等。

     

        堆内存用来存放new创建的对象,堆内存中的实体是用来封装数据的,这些数据都有默认初始值,堆内存中的实体不再被指向时 ,jvm会启动垃圾回收机制。 

     

    运行类过程:方法区找到方法--堆中实例化对象--调用栈(指向堆中实例)

  • 相关阅读:
    你不知道的javaScript笔记(7)
    你不知道的javaScript笔记(6)
    你不知道的javaScript笔记(5)
    你不知道的javaScript笔记(4)
    你不知道的javaScript笔记(3)
    你不知道的javaScript笔记(2)
    java 单链表反转
    Java找出两个链表的第一个公共节点
    Java产生死锁的一个简单例子
    Java 中Enum的使用与分析
  • 原文地址:https://www.cnblogs.com/qq376324789/p/10314399.html
Copyright © 2020-2023  润新知