没有合适的资源?快使用搜索试试~ 我知道了~
一.内存结构 1.程序计数器: (1)作用:用来记录下一条JVM指令的执行地址 (2)JVM指令交给Java解释器解释为机器码,最后才交给CPU执行,每次解释器会从程序计数器中取得下一条执行地址进行执行 (3)程序计数器是线程私有的,互不影响。不会出现内存溢出 2.虚拟机栈:线程运行需要的内存空间,每个方法调用对应一个栈帧(每个方法运行时需要的内存),处于栈顶部的栈帧称为活动栈帧。 (1)垃圾回收是否涉及栈内存:不会,因为栈内存调用完成之后会弹出栈 (2)栈内容分配越大越好吗:不是,因为栈内存越大,能够支持线程数目越少 (3)局部变量是线程安全的,如果方法内部的局部变量,没有逃离方法的作用范围 (4)栈内存溢出:栈帧过多,栈帧过大 3.本地方法栈:当Java去调用一些本地的C/C++方法时使用的栈,native关键字修饰的方法是间接去调用本地的底层方法。 4.堆:通过new关键字,创建对象都会使用到堆内存,堆属于线程共享的,需要考虑线程安全的问题,有垃圾回收机制。
资源推荐
资源详情
资源评论
一. 内存结构
1. 程序计数器:
(1) 作用:用来记录下一条 JVM 指令的执行地址
(2) JVM 指令交给 Java 解释器解释为机器码,最后才交给 CPU 执行,每次解释器会
从程序计数器中取得下一条执行地址进行执行
(3) 程序计数器是线程私有的,互不影响。不会出现内存溢出
2. 虚拟机栈:线程运行需要的内存空间,每个方法调用对应一个栈帧(每个方法运行
时需要的内存),处于栈顶部的栈帧称为活动栈帧。
(1) 垃圾回收是否涉及栈内存:不会,因为栈内存调用完成之后会弹出栈
(2) 栈内容分配越大越好吗:不是,因为栈内存越大,能够支持线程数目越少
(3) 局部变量是线程安全的,如果方法内部的局部变量,没有逃离方法的作用范围
(4) 栈内存溢出:栈帧过多,栈帧过大
3. 本地方法栈:当 Java 去调用一些本地的 C/C++方法时使用的栈,native 关键字修饰
的方法是间接去调用本地的底层方法。
4. 堆:通过 new 关键字,创建对象都会使用到堆内存,堆属于线程共享的,需要考
虑线程安全的问题,有垃圾回收机制。
(1) 堆内存溢出:查看堆信息,jps——Java 进程 ID,jmap -heap 进程 id——查看堆
资源评论
小夕Coding
- 粉丝: 5848
- 资源: 461
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功