java 内存模型堆和本地方法 -凯发k8官方网
凯发k8官方网
收集整理的这篇文章主要介绍了
java 内存模型堆和本地方法
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
- 一、java内存模型堆
- 1、堆特点
- 2、堆异常
- 3、堆的性能调优参数
- 二、本地方方法
一、java内存模型堆
1、堆特点
堆是用于存放对象的内存区域。因此,它是垃圾收集器(gc)管理的主要目标。
- 堆在逻辑上划分为“新生代”和“老年代”,在细致一点可分为eden空间、from survivor空间、to survivor。由于java中的对象大部分是朝生夕灭,还有一小部分能够长期的驻留在内存中,为了对这两种对象进行最有效的回收,将堆划分为新生代和老年代,并且执行不同的回收策略。不同的垃圾收集器对这2个逻辑区域的回收机制不尽相同。这块以后会细讲。
- 内存的分配角度看,线程共享的java堆可能划分出多个线程私有的分配缓冲区。
- 堆一般实现成可扩展内存大小,使用“-xms”与“-xmx”控制堆的最小与最大内存,扩展动作交由虚拟机执行。但由于该行为比较消耗性能,因此一般将堆的最大最小内存设为相等。
- 堆占用的内存并不要求物理连续,只需要逻辑连续即可。
- 堆的生命周期是随着虚拟机的启动而创建。
- 堆是所有线程共享的内存区域,因此每个线程都可以拿到堆上的同一个对象。
2、堆异常
当堆无法分配对象内存且无法再扩展时,会抛出outofmemoryerror异常。
package com.sl.common;import java.util.arraylist; import java.util.list;/*** @author shuliangzhao* @title: test* @projectname spring-boot-learn* @description: todo* @date 2019/9/24 19:41*/ public class test {public static void main(string[] args) {list