首页 > 试题广场 >

以下描述错误的一项是( )?

[单选题]

以下描述错误的一项是( )?

  • 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行  到了第几行,是线程隔离的
  • 原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的
  • 方法区用于存储JVM加载的类信息、常量、静态变量,即使编译器编译后的代码等数据,是线程隔离的
  • Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)
  • 栈区:
  1. 每个线程包含一个栈区,栈中只保存方法中(不包括对象的成员变量)的基础数据类型和自定义对象的引用(不是对象),对象都存放在堆区中
  2. 每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
  3. 栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。
  • 堆区:
  1. 存储的全部是对象实例,每个对象都包含一个与之对应的class的信息(class信息存放在方法区)。
  2. jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身,几乎所有的对象实例和数组都在堆中分配。
  • 方法区:
  1. 又叫静态区,跟堆一样,被所有的线程共享。它用于存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

发表于 2018-10-10 10:53:00 回复(39)
发表于 2020-08-06 17:01:06 回复(0)
方法区和堆内存是线程共享的。
程序计数器、虚拟机栈是线程隔离的。

发表于 2017-09-05 09:36:02 回复(0)
方法区:  1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

发表于 2017-08-19 16:22:25 回复(1)
Java运行时内存
1. 程序计数器,线程私有。可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变整个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能。
由于JVM的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。因此为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,所以线程私有。
程序计数器是唯一一个在Java虚拟机规范中没有规定任何OOM的区域。
2. Java虚拟机栈,线程私有。生命周期和线程相同。虚拟机栈描述的是Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧。每个方法从调用到执行完成的过程,就对应着一个栈帧在虚拟机中入栈到出栈的过程。
3. 本地方法栈,线程私有。和虚拟机栈的区别就在于一个是为了执行Java方法服务,一个是为了虚拟机使用到的Native方法服务。
4. 堆,线程共享。存放对象实例和数组。
5. 方法区,线程共享。存放已经被JVM加载的类信息,常量,静态变量,即时编译器编译后的代码。
发表于 2018-07-18 10:37:27 回复(3)
作者:牧马人的忧伤
链接:https://www.nowcoder.com/discuss/677909?source_id=profile_create_nctrack&channel=-1
来源:牛客网
有关于jvm的笔记!!!
2.类加载子系统  https://www.cnblogs.com/lvxueyang/p/14823872.html
3.运行时数据区  https://www.cnblogs.com/lvxueyang/p/14823896.html
4.虚拟机栈  https://www.cnblogs.com/lvxueyang/p/14823945.html
5.堆  https://www.cnblogs.com/lvxueyang/p/14824371.html
6.方法区  https://www.cnblogs.com/lvxueyang/p/14825139.html
7.对象的实例化内存布局与访问定位  https://www.cnblogs.com/lvxueyang/p/14825444.html
8.执行引擎  https://www.cnblogs.com/lvxueyang/p/14825692.html
9.StringTable(字符串常量池) https://www.cnblogs.com/lvxueyang/p/14826528.html
10.垃圾回收概述和相关算法  https://www.cnblogs.com/lvxueyang/p/14832489.html
11.垃圾回收相关概念  https://www.cnblogs.com/lvxueyang/p/14832980.html
12.垃圾回收器  https://www.cnblogs.com/lvxueyang/p/14833269.html
13.class文件结构  https://www.cnblogs.com/lvxueyang/p/14833319.html
14.字节码指令集  https://www.cnblogs.com/lvxueyang/p/14833373.html
15.类的加载过程(类的生命周期)详解  https://www.cnblogs.com/lvxueyang/p/14833425.html
16.再谈类的加载器  https://www.cnblogs.com/lvxueyang/p/14833471.html
17.性能监控与调优(概述篇)  https://www.cnblogs.com/lvxueyang/p/14833493.html
18.JVM监控及诊断工具-命令行篇  https://www.cnblogs.com/lvxueyang/p/14833528.html
19.JVM监控及诊断工具-GUI篇  https://www.cnblogs.com/lvxueyang/p/14833555.html
20.JVM运行时参数  https://www.cnblogs.com/lvxueyang/p/14833576.html
21.分析GC日志  https://www.cnblogs.com/lvxueyang/p/14833582.html
22.浅堆深堆与内存泄露以及使用OQL语言查询对象信息  https://www.cnblogs.com/lvxueyang/p/14833614.html

如果太花里胡哨就访问 https://lvxueyang.vip/categories/jvm/
发表于 2021-08-15 10:28:59 回复(15)
方法区,堆内存是线性共享
程序计数器,虚拟机栈,是线程隔离
发表于 2018-10-14 15:28:23 回复(0)
局部变量是在堆么,不应该在栈么
发表于 2017-09-12 12:13:56 回复(1)
方法区、堆是共享的,栈,本地方法区,程序计数器是隔离的
发表于 2021-12-16 23:38:22 回复(0)
方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,是线程共享的内存区域
发表于 2018-03-05 15:01:19 回复(0)
方法区不是线程隔离的把,是共享的,堆也是
发表于 2017-08-21 11:21:44 回复(1)
方法区和堆内存是线程共享的。
程序计数器、虚拟机栈是线程隔离的。
方法区:  1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

发表于 2018-05-02 20:47:21 回复(0)
说一说c选项的另一个要思考的问题: 类静态变量在1.7之后实际的存储位置是在堆中
类加载阶段:  
类的字节码载入方法区中,内部采用 C++ 的 instanceKlass 描述 java 类,它的重要 fifield 有
_java_mirror java类的镜像讲kclass暴露给java使用
_super
_fields 成员变量
_vatable 虚方法表
...
其中static变量在JDK1.7之后存储于_java_mirror末尾


发表于 2022-08-19 15:17:29 回复(0)
方法区和堆内存是线程共享的。 程序计数器、虚拟机栈是线程隔离的。
发表于 2021-08-21 22:19:21 回复(0)
堆 和 方法区是共享的,其他是隔离的
发表于 2021-07-20 18:05:13 回复(0)
堆和方法区都是线程共享的
发表于 2021-06-30 22:13:34 回复(0)
堆和方法区是所有线程共享的,程序计数器、虚拟机栈、本地方法栈是线程隔离的
发表于 2020-12-31 10:29:05 回复(0)
方法区线程共享
发表于 2020-08-20 07:15:28 回复(0)
方法区和堆都是线程共享的
发表于 2019-08-07 15:47:39 回复(0)