`
luzhecheng
  • 浏览: 8062 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java内存模型笔记(二)

阅读更多

二.java虚拟机

(1):概念

java虚拟机可能有下面三个概念:

1.一个抽象的规范

2.一个具体的实现

3.一个运行中的虚拟机实例

 

       对一个运行中的虚拟机实例来说,启动它的入口一定是一个main方法。j2ee中的servlet虽然没有main方法,但它是运行在web容器中,启动容器的入口还是一个main方法。

(2):结构 

 java虚拟机体系结构

从上图展示了以个.class文件从加载到执行的示意图,图中虚线内的部分表示了虚拟机内存模型。

 

1. 方法区:别看名字是方法区,其实这块内存区域存的是类中各种数据信息,它描述了一个类的结构。而真正描述方法结构的内存区域叫做方法表,它可以存在于方法区中。

 

2. 堆:java中各种被创建的实例化对象都被存放于堆中。一个虚拟机只有一个堆空间,所有的线程共享这个堆空间。

 

3. java栈:java栈由一幅幅帧组成,就像一幕幕画面,即记录了这个线程中指令的执行顺序,然后在根据这个顺序执行指令。对每个栈帧来说,它包含了局部变量区,帧数据区和操作数栈。对于一些计算,赋值操作,在操作数栈中进行操作,然后把操作结果弹出,压入到局部变量区中。帧数据区用来支持常量池解析和正常方法返回以及异常派发。当当前方法结束时,由帧数据区中保存的数据返回或者弹出。由于java中可以执行多线程,所以每个线程都它有独立地指令队列。

 

4. pc寄存器(pc计数器):每一个线程都有独立的pc计数器,用来标识不同的线程,它里面的内容总是下一条需要执行的指令地址。

 

5. 本地方法栈:java中有很多native方法,这些方法可以动态地扩展java虚拟机,通常的做法是每个native方法调用一个动态链接库(dll)来执行本地方法,动态链接库可以用c,c++甚至汇编来编写。

 

除了上述5个主要的之外还有一些其他的内存区域:

 

6. 常量池:虚拟机为每个被状态的类型维护一个常量池。常量池作为方法区的一部分存在于方法区中。它是一个类型所用常量的一个有序集合,包括了直接常量和对其他类型,字段和方法的符号引用。

 

7.方法表:为了实现对一个类中方法的快速访问,而独立设计了方法表。虚拟机对每个装载的非抽象类都生成一个方法表,把作为类信息的一部分存在于方法区中。方法表是一个数组,它包含了这个实例可能被调用的所有实例方法的引用。

 

(3). 执行引擎:

任何java虚拟机实现的核心都是它的执行引擎。执行引擎使用指令集来定义,对于每条指令,规范都详细规定了当实现执行到该指令时应该处理什么。java程序的每一个线程都有以个独立的执行引擎实例,生命周期等同于线程的生命周期。

 

  • 大小: 42.4 KB
分享到:
评论

相关推荐

    李兴华java笔记

    笔记会涉及类加载机制、内存模型、垃圾回收等JVM核心概念。 9. **设计模式**:笔记会介绍常见的23种设计模式,如单例模式、工厂模式、装饰器模式等,这些都是解决软件开发中常见问题的成熟方案。 10. **Java框架**...

    张龙JAVA圣思园笔记

    笔记可能涵盖了JVM内存模型(堆、栈、方法区、本地方法栈、程序计数器),垃圾收集(GC)机制,类加载过程,以及如何通过JVM参数进行性能调优。 张龙老师的笔记以实战和案例为导向,旨在帮助读者深入理解这些核心...

    Java基础尚硅谷宋红康学习笔记

    7. **JVM优化**:理解JVM内存模型(如堆、栈、方法区、本地方法栈等)、垃圾收集机制以及性能调优技巧。 8. **设计模式**:设计模式是解决软件设计中常见问题的通用解决方案,如工厂模式、单例模式、观察者模式、...

    宋红康java笔记.rar

    12. **JVM内存模型**:理解Java虚拟机的工作原理,包括堆内存、栈内存、方法区等,以及垃圾回收机制。 13. **Spring框架**:如果笔记涵盖了Spring,那么会讲解依赖注入、AOP、MVC等核心概念,这是Java开发中广泛...

    Java开发学习笔记

    Java开发学习笔记主要针对的是初学者,旨在帮助他们掌握Java编程的基础知识。下面将详细讲解Java开发中的核心概念和步骤。 一、Java环境变量设置 在开始Java编程之前,我们需要安装Java Development Kit (JDK)并...

    java笔记 java笔记 java笔记

    这份"java笔记"涵盖了从基础到进阶的各种Java知识,旨在帮助学习者系统地掌握这门语言。以下是对笔记内容的详细解读: 1. **Java基础知识**: - **语法特性**:Java遵循C++的语法结构,但更加简洁和安全,如自动...

    java学习笔记(java 反射机制 流 内存管理)

    Java内存管理主要涉及到堆内存和栈内存的分配与回收。堆内存主要用于存储对象实例,由垃圾收集器自动管理。垃圾收集器通过可达性分析判断对象是否可被访问,不可达的对象将被回收。JVM提供了几种不同的垃圾收集算法...

    韩顺平老师java视频课堂笔记

    笔记可能涵盖类加载、内存模型、垃圾回收等话题。 10. **设计模式**:设计模式是软件开发中的最佳实践,如单例模式、工厂模式、装饰器模式等,笔记将解释这些模式的应用和优缺点。 通过韩顺平老师的Java视频课堂...

    Java学习笔记(必看经典).pdf

    本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...

    JAVA学习笔记 林信良

    在内存管理和垃圾回收方面,书中有专门章节讲解Java的内存模型以及自动内存管理机制,解释了如何避免内存泄漏和理解引用类型,这对于优化程序性能和解决内存问题非常有帮助。 书中还详细阐述了异常处理,这是Java...

    JAVA经典教材笔记

    ### JAVA经典教材笔记知识点梳理 #### 第一章:JAVA概述及开发环境搭建 - **Java学习概述** - Java作为一种广泛使用的编程语言,其学习路径包括掌握基本语法、理解面向对象编程思想、熟悉标准库使用等。 - **JAVA...

    Java基础知识笔记.rar

    20. **JVM**:简要了解Java虚拟机的工作原理,包括类加载、字节码执行和内存模型。 这份笔记不仅适合初学者,也对有经验的开发者巩固基础非常有帮助。通过学习这些内容,你可以建立起坚实的Java编程基础,为进一步...

    狂神说java系列笔记(java基础+javaweb+ssm+微服务)全套

    10. **33、JVM探究.pdf**:深入Java虚拟机,理解内存模型、垃圾回收、性能优化等方面的知识。 通过这些内容的学习,读者不仅可以掌握Java编程的基本技能,还能了解到如何在实际项目中运用这些技能,提升自己的软件...

    java校招学习笔记

    8. **JVM内存模型**:理解堆、栈、方法区、本地方法栈和程序计数器,以及垃圾回收机制。 9. **设计模式**:常见的23种设计模式,如单例、工厂、观察者等,它们在实际开发中的应用场景。 10. **网络编程**:TCP和...

    Android&Java; 技术笔记 等五本

    面试通常会涉及Java基础(如封装、继承、多态)、集合框架(List、Set、Map的区别与使用)、异常处理、多线程、IO流、反射机制以及JVM内存模型等。了解这些内容有助于应对面试中的技术问题。 最后,深入浅出Java ...

    java思维导图及笔记

    10. **JVM**:Java虚拟机的工作原理,内存模型(堆、栈、方法区等),垃圾回收机制。 11. **JavaWeb**:Servlet、JSP的基本概念,HTTP协议,MVC设计模式,以及JSTL和EL表达式。 12. **框架技术**:如Spring框架的...

    java入门笔记.pdf

    最后,文档介绍了JVM的内存模型,包括堆(Heap)和栈(Stack),以及对象在内存中的分配和回收机制。这是Java开发者需要具备的核心知识之一,因为不当的内存管理可能会导致内存泄漏等问题。 整体来看,这份Java入门笔记...

    传智博客JAVA基础笔记个人总结

    8. **JVM内存模型**:理解Java虚拟机(JVM)的工作原理对于优化程序性能至关重要。笔记会探讨堆、栈、方法区等内存区域,以及垃圾回收机制。 9. **Java集合框架深入**:这部分可能包括对泛型、并发容器(如...

    java笔记java笔试题 java面试题

    11. **JVM**:理解Java虚拟机的工作原理,如类加载机制、内存模型(堆、栈、方法区等)、垃圾收集等。 12. **Java 8及更高版本的新特性**:例如Lambda表达式、函数式接口、Stream API、Optional类等。 在"java...

Global site tag (gtag.js) - Google Analytics