网站首页 > java教程 正文
1、Java Virtual machine Stacks (Java虚拟机栈)
- 每个线程运行时所需要的内存,称为虚拟机栈,先进后出
- 每个栈有多个栈帧(frame)组成,对应这每次方法调用时所占用的内存
- 每个线程只能有一个活动栈帧,对应着当期正在执行的那个方法
2、垃圾回收是否涉及栈内存?
- 垃圾回收主要指就是堆内存,当栈帧弹栈以后,内存就释放了。
3、栈内存分配越大越好吗?
- 未必,默认的栈内存通常为1024k。
- 栈帧过大会导致线程数表少,例如:机器总内存为512M,目前能活动的线程数则为512个,如果把栈内存改为2048k,那么能活动的栈帧就会减半。
4、方法内的局部变量是否线程安全?
- 如果方法内局部变量没有逃离方法的作用范围,他是线程安全的。
- 如果是局部变量引用了对象,并逃离方法的作用范围,需要考虑线程安全。
5、什么情况下对导致栈内存溢出情况?
- 栈帧过多导致栈内存溢出,典型问题:递归调用。
- 栈帧过大导致栈内存溢出。
6、堆栈的区别是什么?
- 栈内存一般会用来存储局部变量和方法的调用,但堆内存是用来存储Java对象和数组的,堆会GC垃圾回收,而栈不会。
- 栈内存是线程私有的,而堆内存是线程共享的。
- 两者异常错误不同,但如果栈内存或堆内存不足都会抛出异常:
占内存不足:java.lang.StackOverFlowError
堆内存不足:java.lang.OutOfMemoryError
猜你喜欢
- 2024-11-12 本地方法栈、JVM栈、本地内存和JVM Heap的区别与关系
- 2024-11-12 Java基础之堆、栈、方法区、类加载器——JVM内存模型分析
- 2024-11-12 java之栈内存与堆内存(栈内存 和堆内存)
- 2024-11-12 深入了解Java虚拟机栈以及内存模型
- 2024-11-12 Java虚拟机栈区域(虚拟机栈描述的是java方法执行的内存模型)
- 2024-11-12 一文读懂Java的“栈内存”[Stack]和“堆空间”[Heap]
- 2024-11-12 JVM 内存结构(jvm内存结构及作用)
- 2024-11-12 「JVM系列」 从一到掌握JVM系列之Java虚拟机栈
- 2024-11-12 答读者问:Java 里的堆内存和栈内存是什么意思?
- 2024-11-12 Java中堆和栈的区别(java中堆和栈的区别在哪)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)