中科时代建设官方网站,用自己的手机做网站,企业定制,工程建设项目网站目录
堆、栈、方法区分别都存储了那些内容#xff1f;
堆#xff08;heap#xff09;
栈#xff08;stack#xff09;
方法区#xff08;method#xff09;
在 java 中 wait 和 sleep 方法的区别#xff1f; 堆、栈、方法区分别都存储了那些内容#xff1f; 堆
堆heap
栈stack
方法区method
在 java 中 wait 和 sleep 方法的区别 堆、栈、方法区分别都存储了那些内容 堆对象的实例、数组 栈对象的引用、基本数据类型 方法区类(class)、静态方法、静态变量、常量、成员方法、常量池 堆heap
在JVM中就只有一个堆当虚拟机开启时创建所有的线程都共用这一个堆。
堆内存中可以存储对象的实例也就是new出来的对象。还可以存数组。而new对象的引用地址则存储在stack栈中堆中只存储对象本身。 栈stack
java栈和堆不同的是每一个线程都有一个stack而且栈的区域非常小大概只有1M左右但存储速度非常快所以我们把快速执行的任务存储在stack中。
栈中可以存储基本数据类型和对象的引用(是引用地址而不是实例)。 方法区method
方法区又叫静态区方法区中存储的都是整个程序中唯一存在的元素所以方法区和堆一样被所有线程共享。
方法区可以存储
类(class)静态方法静态变量(static变量)常量成员方法常量池 在 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 通常被用于暂停执行。