Java教程

Java对象在堆栈的分配

本文主要是介绍Java对象在堆栈的分配,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

What is Stack

栈(Stack)是操作系统在建立某个进程时或者线程(在支持多线程的操作系统中是线程)为这个线程建立的存储区域,该区域具有FIFO的特性,在编译的时候可以指定需要的Stack的大小。

What is Heap

堆(Heap)是应用程序在运行的时候请求操作系统分配给自己内存,一般是申请/给予的过程。

Difference

由于从操作系统管理的内存分配所以在分配和销毁时都要占用时间,所以用堆的效率低的多!但是堆的好处是可以做的很大。

Java对象在堆栈的分配

在Java中所有的对象(包括int的wrapper Integer)都是在堆中分配的,但是这个对象的引用却是在Stack中分配。也就是说在建立一个对象时从两个地方都分配内存,在Heap中分配的内存实际建立这个对象,而在Stack中分配的内存只是一个指向这个堆对象的指针(引用)而已。可从下图来深刻理解:

这篇关于Java对象在堆栈的分配的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!