
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人在转行学习软件编程开发的时候都会去学习Java编程开发语言,而本文我们就通过案例分析来简单了解一下,Java编程入门需要掌握哪些知识点。
1、运行时数据区
运行时数据区域是设计用于存储数据的内存区域。这些数据由开发人员的程序或JVM用于其内部工作。
2、堆
堆是所有Java虚拟机线程之间共享的内存区域。它是在虚拟机启动时创建的。所有类实例和数组都在堆中分配(使用new运算符)。
3、方法区
方法区是所有Java虚拟机线程之间共享的内存。它是在虚拟机启动时创建的,并由类加载器从字节码加载。只要加载它们的类加载器还活着,方法区中的数据就会保留在内存中。
方法区存储:
类信息(字段/方法的数量、超类名称、接口名称、版本……)
方法和构造函数的字节码。
每个加载的类都有一个运行时常量池。
规范不强制在堆中实现方法区。例如,在JAVA7之前,OracleHotSpot使用名为PermGen的区域来存储方法区域。这个PermGen与Java堆(以及像堆一样由JVM管理的内存)是连续的,并且被限制为64Mo的默认空间(由参数-XX:MaxPermSize修改)。从Java8开始,HotSpot现在将方法区存储在称为Metaspace的独立本机内存空间中,大可用空间是可用的系统总内存。
注意:方法区域不能超过大大小。如果超过此限制,JVM将抛出OutOfMemoryError。
4、运行时常量池
该池是方法区的子部分。由于它是元数据的重要组成部分,Oracle规范将运行时常量池与方法区分开描述。每个加载的类/接口都会增加这个常量池。这个池就像传统编程语言的符号表。换句话说,当一个类、方法或字段被引用时,JVM通过运行时常量池在内存中搜索实际地址。它还包含常量值,如字符串文字或常量原语。
5、pc寄存器(每个线程)
每个线程都有自己的pc(程序计数器)寄存器,与线程同时创建。在任何时候,每个Java虚拟机线程都在执行单个方法的代码,即该线程的当前方法。pc寄存器包含当前正在执行的Java虚拟机指令(在方法区域中)的地址。
注意:如果线程当前正在执行的方法是native,则Java虚拟机的pc寄存器的值是未定义的。Java虚拟机的pc寄存器足够宽,可以保存特定平台上的returnAddress或native指针。
6、框架
帧是一种数据结构,其中包含表示当前方法(被调用的方法)中线程状态的多个数据:
操作数堆栈:我已经在关于基于堆栈的体系结构的章节中介绍了操作数堆栈。字节码指令使用此堆栈来处理参数。该堆栈还用于在(java)方法调用中传递参数,并在调用方法的堆栈顶部获取被调用方法的结果。
局部变量数组:该数组包含当前方法范围内的所有局部变量。该数组可以保存原始类型、引用或returnAddress的值。这个数组的大小是在编译时计算的。Java虚拟机在方法调用时使用局部变量来传递参数,被调用方法的数组是从调用方法的操作数栈中创建的。
运行时常量池引用:引用当前正在执行的方法的当前类的常量池。JVM使用它来将符号方法/变量引用(例如:myInstance.method())转换为实际内存引用。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。