当前位置: 首页 > news >正文

【Java基础面试宝典】堆、栈、方法区分别都存储了那些内容?wait 和 sleep 方法的区别?

目录

堆、栈、方法区分别都存储了那些内容?

堆(heap)

栈(stack)

方法区(method)

在 java 中 wait 和 sleep 方法的区别?


堆、栈、方法区分别都存储了那些内容?

堆:对象的实例、数组

栈:对象的引用、基本数据类型

方法区:类(class)、静态方法、静态变量、常量、成员方法、常量池

堆(heap)

在JVM中就只有一个堆,当虚拟机开启时创建,所有的线程都共用这一个堆。

  1. 堆内存中可以存储对象的实例,也就是new出来的对象。还可以存数组
  2. 而new对象的引用地址则存储在stack栈中,堆中只存储对象本身。

栈(stack)

java栈和堆不同的是每一个线程都有一个stack,而且栈的区域非常小,大概只有1M左右,但存储速度非常快;所以我们把快速执行的任务存储在stack中。

  1. 栈中可以存储基本数据类型和对象的引用(是引用地址,而不是实例)。

方法区(method)

方法区又叫静态区,方法区中存储的都是整个程序中唯一存在的元素,所以方法区和堆一样被所有线程共享。

方法区可以存储:

  1. 类(class)
  2. 静态方法
  3. 静态变量(static变量)
  4. 常量
  5. 成员方法
  6. 常量池

在 java 中 wait 和 sleep 方法的区别?

  • 方法归属不同:sleep() 来自 Thread,是 Thread 的静态方法;而wait() 来自 Object,是 Object 的成员方法,每个对象都有
  • 锁特性不同:sleep() 不释放锁;wait() 释放锁。
  • 醒来时机不同执行 sleep(long) 和 wait(long) 的线程都会在等待相应毫秒后自动醒来wait(long) 和 wait() 还可以被 notify 唤醒,wait() 如果不唤醒就一直等下去它们都可以被打断唤醒sleep可以自然醒,wait必须等待别人唤醒;

最大的不同是在等待时 wait 会释放锁,而 sleep 一直持有锁。wait 通常被用于线程间交互,sleep 通常被用于暂停执行。

http://www.lryc.cn/news/64125.html

相关文章:

  • 古剑飞仙手游Linux系统服务器架设教程
  • python实战应用讲解-【numpy数组篇】常用函数(十)(附python示例代码)
  • 计算机组成原理(考研408)练习题#2
  • Apache POI,springboot中导出excel报表
  • CSS(一)-- 三种样式表
  • 嵌入式之Samba服务器搭建
  • vue3+go——看到了就去学习吧
  • Perf工具统计CPU性能
  • 考验大家指针功底的时候到了:请问如何理解 (int*)1 + 1 ?
  • 英语基础-介词
  • Linux进程通信:进程组 会话
  • 【前端面经】JS-深浅拷贝
  • 【自然语言处理】实验2布置:Word2Vec TransE案例
  • Redis集合底层实现原理
  • OVS常用命令与使用总结
  • 一以贯之:从城市网络到“城市一张网”
  • 【Java校招面试】基础知识(四)——JVM
  • 项目管理-计算专题(三点估算、PERT估算)
  • 【华为OD机试 2023最新 】模拟商场优惠打折(C语言题解 100%)
  • 使用TrieTree(字典树)来实现敏感词过滤
  • USB转串口芯片CH9101U
  • Java语言介绍
  • 终于把 vue-router 运行原理讲明白了(二)!!!
  • ChatGPT实现服务器体验沙箱
  • 【算法】刷题中的位运算
  • 9.Java中异常处理机制是什么
  • GeoTools实战指南: 叠加GeoTIFF与Shapefile图层生成截图
  • nginx配置sh脚本远程执行一键安装
  • Excel表格成绩排名全攻略,让你事半功倍!
  • Docker 持久化存储 Bind mounts