java堆是什么结构,java堆的划分
如何解决写爬虫IP受阻的问题?立即使用。
对于大多数应用程序,Java堆是Java虚拟机管理的最大内存块。Java堆是所有线程共享的内存区域,是在虚拟机启动时创建的。这个内存区域的唯一用途就是存储对象实例,几乎所有的对象实例都在这里分配内存。这在Java虚拟机的规范中有描述:所有对象实例和数组都要成对分配内存。但随着JIT编译器的发展和转义分析技术的逐渐成熟,堆栈分配和标量替换优化技术会发生一些微妙的变化,所有对象都分配在堆上,逐渐变得不那么绝对。
Java堆是垃圾收集器管理的主要区域,所以常被称为“GC堆”。从内存回收的角度来看,Java堆可以细分为新生代和老一代,因为现在的收集器基本都采用分代收集算法;有伊甸园空间,从幸存者空间,到幸存者空间等等。从内存分配的角度来看,线程共享的Java堆可以分成几个特定于线程的分配缓冲区。但是,无论怎么分,都和存储的内容无关。无论在哪个区域,对象实例仍然被存储。进一步划分的目的是为了更好的回收内存或者更快的分配内存。
按照Java虚拟机的规范,Java堆可以在一个物理上不连续的内存空间里,只要逻辑上连续,就像我们的磁盘空间一样。实现的时候可以是固定大小,也可以是可扩展的,但是目前主流的虚拟机都是按照可扩展性来实现的。如果堆中没有内存来完成实例分配,并且堆无法再扩展,将会引发OutOfMemoryError异常。
总结
1.java堆是java虚拟机管理的最大内存块。
2.java堆由所有线程共享。
3.java堆的主要功能是存储对象实例。
4.ava堆是垃圾收集器管理的主要区域。
5.收集器基本采用分代收集算法。
6.java堆可以分为新生代和老一代,也可以详细分为伊甸园区、从Surivor区和到Surivor区。
推荐:java视频教程以上是Java堆。这是什么?更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。