栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java内存管理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java内存管理

文章目录
        • JDK和JRE
        • Java内存管理
          • 运行时数据区域
          • 直接内存
        • 参考文章

JDK和JRE


JDK是支持Java程序开发的最小环境。Java虚拟机,Java类库和Java编程语言,统称为JDK。
JRE是支持Java程序运行的标准环境。Java虚拟机,Java类库API中的Java SE API子集,统称为JRE。

我们知道,Java是跨平台语言,“一次编写,到处运行”。

Java内存管理 运行时数据区域

Java程序运行时的内存管理由Java虚拟机负责。
Java虚拟机所管理的内存主要包括以下几个运行时数据区域。

  • 程序计数器
    程序计数器是一个字节码的行号指示器。
    每个线程都有一个独立的程序计数器。
    如果线程执行的是一个Java方法,则计数器的值是字节码指令的地址;如果线程执行的是一个native方法,则计数器的值是Undefined。

    关于本地方法,简单介绍如下。
    本地方法,用native修饰的方法,如下所示,
public class IHaveNatives{
    public native void nativeMethod1(int x);
    public native static void nativeMethod2();
    private native synchronized float nativeMethod3(Object o);
    native void nativeMethod4(int[] array) throws Exception;
}

在定义一个本地方法时,并不提供实现体,因为实现体是由非Java语言实现的,比如C语言。
这种特征并非Java特有,很多其他的编程语言都有这种机制。比如在C++中,你可以使用extern "C"告诉C++编译器去调用一个c的函数。

  • 栈(虚拟机栈)
    Java虚拟机执行java方法时,使用的是虚拟机栈。
    每个方法执行时,Java虚拟机都会同步创建一个栈帧。
    栈帧中存储着局部变量表、操作数栈、动态连接、方法出口等信息。
    其中,局部变量表中存放着各种Java基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用。
  • 本地方法栈
    Java虚拟机执行native方法时,使用的是本地方法栈。

  • 堆中存放着对象实例。用new创建一个对象,这个对象存储在堆里。
  • 方法区
    方法区中存放着已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。
    运行时常量池是方法区的一部分,存放着编译期生成的各种字面量与符号引用。
直接内存

直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。
直接内存是在Java堆外的,直接向系统申请的内存空间。

参考文章

jvm什么是本地方法
Java中直接内存的理解和基本使用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322215.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号