0 0

为什么JVM将线程的程序计数器划分在堆区域10

提问如题,有点不明白的是:
线程的程序计数器目的是为记录当前线程调用方法的执行位置。

栈中存储的对象需要满足2个特点:1.占用内存小;2.线程私有
堆中存储的对象需要满足2个特点:1.共享;2.数据结构复杂,占用的内存多大

按照我理解,线程的程序计数器占用内存小,而且是线程私有的,也不需要共享给其他线程,理应在栈中存储,希望大家来探讨下,或是大牛来解释下
JVM 
2012年8月14日 08:27

4个答案 按时间排序 按投票排序

0 0

采纳的答案

1、运行时可分为如下内存区域:方法区、虚拟机栈、本地方法栈、堆、程序计数器
2、堆区并不是完全共享,也可以划分线程独立的缓冲区。
3、程序计数器是独立的内存区域

2012年8月14日 10:58
0 0

用堆栈保存数据,我觉得应该还有一个条件:
递归,或者调用结束即释放。

计数器的话貌似不符合这个条件。

2012年8月14日 17:38
0 0

程序计数器又不是jvm的范畴,而是属于计算机体系结构中寄存器范畴,不能用于存储其他运算数据。jvm的书籍上把程序计数器放进来,应该是说在执行java程序时,有用到程序计数器。而并不是说jvm像管理堆、栈那样管理程序计数器。

2012年8月14日 14:13
0 0

我的理解是
程序计数器是单独的一块,独立于堆和栈
《Inside the Java Virtual Machine 2nd Edition》 作者:Bill Venners

2012年8月14日 11:44

相关推荐

    JVM 性能调优_JVM 内存区域划分.pdf

    JVM性能调优_JVM内存区域划分 JVM(Java Virtual Machine)是 Java 语言的核心组件之一,其性能优化对 Java 应用程序的执行效率和稳定性具有至关重要的影响。在 JVM 中,内存区域的划分和管理是性能优化的关键所在...

    JVM内存区域划分.docx

    本文将详细解析JVM内存的几个关键区域:程序计数器、Java栈、本地方法栈和堆。 1. **程序计数器(线程私有)** 程序计数器,或PC寄存器,是每个线程独享的内存区域。它存储当前线程正在执行的指令地址,CPU在执行...

    第25讲谈谈JVM内存区域的划分,哪些区域可能发生OutOfMemoryError1

    堆中存储Java对象实例,垃圾收集器主要负责堆的管理,通常将其划分为新生代和老年代,以便更有效地进行垃圾回收。 4. **方法区(Method Area)**:又称非堆(Non-Heap),存储类结构信息、运行时常量池、字段、方法...

    JVM内存区域划分Java系列2021.pdf

    在JVM中,内存区域被划分为几个不同的部分,每一个部分有着不同的用途,从而实现了JVM的稳定和高效运行。根据上述内容,我们可以详细介绍如下几个主要的内存区域: 1. 程序计数器(Program Counter Register) 程序...

    JVM内存区域划分.pdf

    JVM的内存区域主要分为以下几个部分:程序计数器、Java虚拟机栈、本地方法栈、堆以及方法区。这些部分共同协作,确保Java程序的平稳运行。 首先,程序计数器是每个线程私有的。它负责记录当前线程执行到哪一条指令...

    jvm模型图谱简介基本概念

    Jvm 模型图谱是 Java 虚拟机(Java Virtual Machine,JVM)在运行程序时自动管理的内存区域的划分,主要包括方法区、Jvm 堆、程序计数器、虚拟机栈、本地方法栈等几个区域。每个区域都有其特定的用途以及创建销毁的...

    JVM的内存区域化

    Java虚拟机(JVM)是Java程序运行的核心,它将内存划分为多个区域,以高效地管理和执行程序。这些区域包括:程序计数器、虚拟机栈、本地方法栈、堆和方法区。每个区域都有特定的功能和生命周期。 1. **程序计数器**...

    JVM内存空间分配笔记

    在JDK 8之前,方法区是在堆中划分出来的一部分内存区域;而在JDK 8之后,方法区被移到了本地内存中,被称为元空间(Metaspace)。 - **变化**:JDK 8之后,方法区从堆中分离,变为元空间。 - **存储位置**:元空间...

    jvm 内存分析文档

    如果线程执行的是本地方法(native),程序计数器将为空。 - **JVM栈(JVM Stack)**:线程私有,每个线程创建时都会创建对应的JVM栈。栈中存储局部变量(包括基本类型和对象引用)、方法参数、Stack Frame。当变量...

    深入JVM笔记word版

    为了更好地理解和掌握JVM内部的工作机制,本篇文章将重点介绍JVM中的几个关键内存区域:程序计数器、Java虚拟机栈、本地方法栈、堆以及方法区。 #### 二、程序计数器(Program Counter Register) 程序计数器是一块...

    深入详解JVM内存模型与JVM参数详细配置.pdf

    其中,堆内存可以再细分为新生代和老年代,新生代中还可以再次划分为Eden区、From Survivor区和To Survivor区。栈内存可以再细分为java虚拟机栈和本地方法栈。 knowledge point 2: 堆内存(Heap) 堆内存是Java...

    JVM学习笔记一(线程私有的内存区域)

    程序计数器:因为cpu会划分为时间片给多个线程执行,所以需要程序计数器记录下指令执行到具体的位置,当下次线程切换时,从记录的位置继续执行,同时它也是唯一不会发生OOM错误的。 本地方法栈与虚拟机栈在某些jvm...

    JVM虚拟机复习宝典

    根据不同的垃圾回收策略,堆可以被划分为新生代和老年代,其中新生代又可以进一步细分为Eden区、From Survivor区和To Survivor区。 - **Method Area(方法区)**:方法区用于存储已被虚拟机加载的类信息、常量、...

    JVM 完整深入解析.pdf

    综上所述,JVM作为Java程序的运行环境,其运行时数据区域划分和内存模型的实现,保证了Java程序的稳定性和高效性。了解这些知识点对于Java开发者来说至关重要,有助于编写出更加高效、稳定的Java应用程序。

    JVM内存区域.docx

    ### JVM内存区域详解 #### 一、进程与线程概念 ...通过以上详细的介绍,我们可以看出JVM内存区域的划分及其各自的作用非常重要,不仅有助于理解Java程序的执行机制,也为优化程序性能提供了基础。

    Java面试JVM+多线程重点突破.zip

    2. **垃圾回收机制**:JVM的自动内存管理,包括新生代、老年代、永久代(在Java 8后变为元空间)的划分,以及Minor GC、Major GC和Full GC的区别。重点理解如何触发垃圾回收,以及如何通过参数调整GC策略以优化性能...

    深入理解jvm虚拟机

    3. 运行时数据区:JVM在执行Java程序的过程中,会将其划分成不同的区域以管理不同的数据。主要包括方法区(Method Area)、堆(Heap)、Java栈(Java Stack)、本地方法栈(Native Method Stack)、程序计数器...

    JVM 精华知识点汇总1

    JVM(Java虚拟机)在运行时将内存划分为多个区域,以便高效管理和优化程序的执行。这些区域包括: 1. **方法区**:存储类信息、常量、静态变量和编译后的代码。在Java 7之前,方法区是堆的一部分,称为"非堆"或...

    JVM自动内存管理:内存区域基础概念

    Java堆可以被划分为新生代(Young Generation)和老年代(Tenured Generation),进一步细分为Eden区、Survivor区(From和To)。 5. **方法区**(Method Area): 又称为永久代,存储类信息、常量、静态变量、即时...

Global site tag (gtag.js) - Google Analytics