JVM运行时存储区分为4个
来源:互联网 发布:阿里云中国排名 编辑:程序博客网 时间:2024/06/11 18:52
JVM(Java Virtual Machine)运行时存储区分为4个:
1、程序计数器:线程私有。是一块较小的内存,是当前线程所执行的字节码的行号指示器。通过改变计数器的值来确定下一条指令,比如循环,分支,跳转,异常处理,线程恢复等都是依赖计数器来完成。是JVM中唯一没有规定OOM(OutofMemory)的区域。
2、栈区:线程私有,生命周期和线程相同。
用于存储(1)基础数据类型 byte short int long float double char boolean (2)对象的引用变量(引用变量就相当于是为堆中的数组或对象起的一个别名,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。)
3、堆:所有线程共享 ,JVM只有一个堆区,虚拟机启动时创建。
用于存储:(1)new出来的的对象 (2)数组
4、方法区(永久区、静态区):所有线程共享,用于存储已被JVM加载的类信息、常量、静态变量等数据。
方法区的垃圾收集主要是回收废弃常量和无用的类(卸载类)。但是垃圾回收其实很少光顾这个区域。
提问:String 和 stringbuffer创建的对象放在栈还是堆呢?
String既可以在堆中存放,也可以在栈中存放。String对象有两种方式来创建,一种是new,比如String str = new String("abc"),这样的会存放在堆中,且每调用一次就会创建一个新的对象;另一种是直接用等号赋值String str = "abc",这一种是先在栈中创建一个对String类的对象引用变量str ,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str 指向"abc",如果已经有"abc",则直接令str 指向"abc"。
stringbuffer存放在堆中。
阅读全文
0 0
- JVM运行时存储区分为4个
- Jvm(java)内存存储简单区分。
- jvm运行时内存
- 【JVM】JVM运行时数据区域
- java--jvm--jvm运行时数据区
- 写个程序,运行时CPU占用率为50%
- 加载和执行时存储区分布
- JVM内存结构,堆栈和方法区分别存储的内容
- JVM 运行时数据区域
- jvm运行时数据区域
- JVM运行时数据区
- JVM运行时内存空间结构
- JVM运行时数据区域
- JVM 运行时数据区
- JVM运行时是什么样子?
- JVM运行时数据区
- JVM运行时数据区
- JVM运行时数据区域
- 如何遏制PostgreSQL WAL的疯狂增长
- linux下udp学习笔记
- Clarke and MST(最大生成树)
- 阿里云centos7公网ping不通
- 《Web接口开发与自动化测试基于Python语言》--第11章
- JVM运行时存储区分为4个
- 数据库报错The user specified as a definer ('root'@'%') does not exist 解决方法
- 部分全面屏高比例手机沉浸栏不显示问题
- js解析xml
- mysql group_concat()函数总结
- Oracle 查询过程中中间空格的处理
- mt2503[AT Command]AT+CKPD 如何使用
- SVN学习--进阶
- JackSon解析json字符串