• JVM


    简介

    JVM,是Java虚拟机,可以安装在各操作系统,是一个进程。Java虚拟机是一个可以执行Java字节码的虚拟机进程。

    Java程序在Java虚拟机上运行。

    Java程序一次编译后,在各操作系统运行不需要重新编译。只要该操作系统安装了Java虚拟机即可。

    因此,Java语言是平台(操作系统)无关的编程语言。Java程序员不需要为不同的操作系统重新编码Java代码。

    Java虚拟机内存结构(Java虚拟机的运行内存)

    内存,即运行内存,这里说的运行内存是指Java虚拟机的运行内存。计算机才有运行内存,运行内存是计算机的资源之一,程序/进程是占用运行内存的。

    Java虚拟机是一个虚拟机,但对操作系统来说也是一个进程。比如,操作系统有16G运行内存,Java虚拟机分了一些运行内存,比方说Java虚拟机这台计算机有3G的运行内存,每个Java程序运行时便占用这3G的运行内存。

    这里要插入一段解释,进程和线程,进程和线程是相对的。

    一个JVM里的Java程序都是线程。

    操作系统是管理计算机资源的,所以Java虚拟机管理Java虚拟机的运行内存。

    Java虚拟机的运行内存可以分为几部分(Java虚拟机的运行内存的几大内存区域):

    1.Java堆(Heap),线程共享,运行内存中最大的一块,虚拟机启动时创建,该区域的唯一目的是存放对象实例,比如new Object(),申请一些内存空间,就是Java堆这一区域。

    2.方法区(method area):线程共享,用于存储已经被虚拟机加载的 类信息,常量,静态变量,

    3.程序计数器:线程私有,一块较小的内存空间,他的作用是:当前线程所执行的字节码的行号的一个指示器,

    4.JVM栈:线程私有,生命周期与线程相同,JVM栈内存模型:描述的是Java方法执行,每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

    5.本地方法栈:线程私有,......,

    JVM内存回收

    JVM运行内存是有限的,为了Java程序在JVM里良好的运行,需要实施内存回收机制,

    之前说JVM内存分成5大部分,其中,Java堆这一块是内存回收的重点关注的地方,即Java实例,new 的对象,

    未完待续......

    现在说回收堆内存这一块,简单来说,如果一个对象凉了,那么这个对象就是垃圾,就要回收掉,

    那么如何判断对象凉了(可达性分析算法,图论),

    JVM垃圾回收机制:https://blog.csdn.net/A12115419/article/details/122603193

    https://www.cnblogs.com/riches/p/11912048.html,这两篇文章可供参考;

  • 相关阅读:
    JAVA-类加载机制(2)-类加载的过程
    JAVA-类加载机制(1)-生命周期
    StarUML-详解
    JMS-mq-发布/订阅
    JMS-mq-点对点
    Spring-Transcation
    Session-Hibernate
    Session
    Git配置
    Maven配置
  • 原文地址:https://www.cnblogs.com/yyjh/p/16189446.html
Copyright © 2020-2023  润新知