当前位置:网站首页 > Java基础 > 正文

java项目基础步骤



Heap(堆)

1、Java 程序在运行时创建的所有类实例或数组都放在同一个堆中。

2、一个 Java 程序独占一个 JVM 实例,互补干扰,一个 JVM 实例只存在一个堆空间,同一 Java 程序中的所有线程都共享这个堆,所以得考虑多线程访问对象(堆数据)的同步问题。

3、可能出现的异常为:java.lang.OutOfMemoryError:Java heap space

Method area(方法区)

1、Java 虚拟机中,被装载的 class 的信息存储在 Method area 的内存中。

2、当虚拟机装载某个类型时,它使用类装载器定位相应的 class 文件,然后读入这个 class 文件的内容,并把它传输到虚拟机中。然后虚拟机提取其中的类型信息,同时将它存储到方法区。该类型中的类(静态)变量同样也存储在方法区中。

3、与 heap 一样,method area 也是多线程共享的,需要考虑多线程访问的同步问题。比如:两个线程都企图访问一个名为 HelloWorld 的类,而这个类还没有装载入虚拟机,那么这时应该只有一个线程去装载它,另一个线程只能等待。

4、可能出现的异常:java.lang.OutOfMemoryError:PermGen full(permanent generation full)

Java Stack(虚拟机栈)

1、Java stack 以帧为单位保存线程的运行状态。

2、虚拟机只会直接对 Java stack 执java项目基础步骤行两种操作;以帧为单位的压栈或出栈。每当线程调用一个方法时,就对当前状态作为一个帧保存到 Java stack 中(压栈);当一个方法返回时,从 Java stack 弹出一个帧(出栈)。

3、栈的大小是有一定的限制的,可能出现的问题为:StackOverFlow

Program counter(程序计数器)

1、每个运行中的 Java 程序,每一个线程都有它自己的 PC寄存器,在线程启动时创建的。(延伸:寄存器是 CPU 的组成部分,是一个容量有限的高速存储部件,它们可用来暂存指令、数据和地址)

2、PC寄存器的内容总是指向下一条将被执行指令的"地址",这里的"地址"可以是一个本地指针,也可以是在方法区中相对应于该方法起始指令的偏移量。

Native method stack(本地方法栈)

1、对于一个运行中的 Java 程序而言,它可能会用到一些跟本地方法相关的数据区。当某个线程调用一个本地方法时,它就进入了一个全新的并且不再受虚拟机限制的世界。

2、本地方法可以通过本地方法接口来访问虚拟机的运行时数据区,不止与此,它还可以做任何它想做的事情。比如,可以调用寄存器,或在操作系统中分配内存等。

  • 上一篇: 班java基础
  • 下一篇: java基础蜘蛛纸牌
  • 版权声明


    相关文章:

  • 班java基础2025-04-16 23:26:03
  • java 常见基础组件2025-04-16 23:26:03
  • java基础题在线2025-04-16 23:26:03
  • java集合基础代码2025-04-16 23:26:03
  • java基础编码题2025-04-16 23:26:03
  • java基础蜘蛛纸牌2025-04-16 23:26:03
  • 昆明java语言基础2025-04-16 23:26:03
  • JAVA方法基础例题2025-04-16 23:26:03
  • java程序设计基础ppt2025-04-16 23:26:03
  • core java基础教程2025-04-16 23:26:03