堆栈、堆、方法区介绍

摘要:
方法区包含所有的class和static变量。方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

堆栈、堆、方法区介绍

预备知识
java数据类型:

基础数据类型:boolean、byte、short、char、int、long、float、double

引用数据类型:类、接口、数组

堆栈、堆、方法区
JAVA的JVM的内存可分为3个区:堆(heap)、堆栈(stack)和方法区(method)

堆区:

提供所有类实例和数组对象存储区域

jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身

栈区:

每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中

每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。

方法区:

又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

运行时常量池都分配在 Java 虚拟机的方法区之中

栗子

public voidtest(){
A a = newA();
int b = 1;
}

public classA{

}

这个栗子中

a是A对象的引用所以放在栈中,A是自定义对象所以放在堆中.

b是基础数据类型所以在栈中.

A是自定义对象所以放在堆中"应该是new A()

小结
这里用一个在别处看到的栗子总结再好不过

堆和栈的区别可以用如下的比喻来看出:

使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就
走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自
由度小。

免责声明:文章转载自《堆栈、堆、方法区介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇幸运拼系统代码幸运拼团系统源码分享Android Native Hook技术(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

UCOSIII任务创建

UCOSIII任务创建: 首先要确保UCOSIII移植成功; 一般以下几个步骤就行了: 第一步:写好任务所需的 优先级、堆栈、控制块等; 然后顺便声明下任务函数; 第二步:开始创建函数 源码: 1 #include "led.h" 2 #include "delay.h" 3 #include "sys.h" 4 #include "usart.h"...

Jmeter系列(27)- 详解正则提取器

如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html   有了 JSON 提取器为啥还要用正则提取器? JSON 提取器只针对接口返回的响应内容 如果想提取的是响应头、请求头的值,而非响应内容的值呢? 这个时候正则提取器的作用就出来了,它可以提取请...

linux c 用户态调试追踪函数调用堆栈以及定位段错误[转载]

一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。 在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。 int backtrace(void **buffer,int size) 该...

shell 脚本操作informix数据库

shell 脚本操作informix数据库的简单模板: functionName(){ dbaccess << ! database 库名; sql语句; ! } 栗子1:更新数据 functionName(){ nameStr=$1 idStr=$2 dbaccess << ! da...

LUA交互函数

lua_newtable void lua_newtable (lua_State *L); 创建一个空 table ,并将之压入堆栈。 它等价于 lua_createtable(L, 0, 0) 。 lua_gettop int lua_gettop (lua_State *L); 返回栈顶元素的索引。 因为索引是从 1 开始编号的, 所以这个结...

转:程序内存空间(代码段、数据段、堆栈段)

https://blog.csdn.net/ywcpig/article/details/52303745 在冯诺依曼的体系结构中,一个进程必须有:代码段,堆栈段,数据段。 进程的虚拟地址空间图示如下: BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Sym...