栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM运行时数据区、常见jvm异常例子

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM运行时数据区、常见jvm异常例子

JVM 运行时数据区:

Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分为若干个不同的数据区域。

堆 (heap):

线程共享存储:绝大部分创建的实例对象、数组、字符串常量池;说明:
– 对象引用存储在 栈,指向存储着对象在堆中的地址
– 堆内存中的对象存储着自己的成员变量,并不保存对象的方法,方法被保存在帧栈中。参数: -Xms1G - 初始堆内存 -Xmx1G -最大堆内存;默认大小
– 默认初始值,物理内存的 64/1 、最大 1/4;按内存8G来算,就是128M ~ 2G内存回收: 新生代、老年代 - 1:2 ; 新生代:eden 、s1 、s2 - 8:1:1回收算法:
– 新生代,复制算法: 将可用的新生代内存分成2个区域 s1 、s2 每次只使用其中一个区域,对其中一个区域进行回收时,将此区域存活的对象复制到另一个区域,把当前区域清空. eden + s1 - > s2 , eden + s2 ->1
– 老年代,标记压缩:从根节点标记所有被引用的对象,将所有存活对象压缩移动到内存一端,清除剩下垃圾对象清除。


堆内存溢出( java.lang.OutOfMemoryError )

List 循环添加,一般可能出现在: 大批量添加数据

所有一般,分批量添加List导入数据库

		List list=new ArrayList<>();
        while(true){
            list.add(new User().setName("小树"));
        }

大文件的 IO 处理时:

//size 声明 多 ~~大 ,比如: new byte[in.available()];
byte[] buffer = new byte[size] //1024 * 1024 * 5

异常处理:针对这类型的异常捕捉,用 Throwable e ,然后做出相应处理

		try {
			//TODO
        } catch (Throwable e) {
            e.printStackTrace();
        }

java 虚拟机栈:

线程私有区域,生命周期和线程相同;每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack frame)存储:栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址流程:每一个方法被调用直至执行完毕的过程,就对应这一个栈帧在虚拟机栈中从入栈到出栈的过程
–截图取至:地址参数:-Xss

栈溢出 (java.lang.StackOverflowError):

递归调用方法, 方法调用层次太深,内存不够新建栈帧

private static int count;

    public static void count(){
        try {
            count++;
            count();
        } catch (Throwable e) {
            System.out.println("最大深度:"+count);
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        count();
    }

方法区:java类信息、运行时常量池、静态变量

JDK1.7及以前,称为永久代Perm,在堆中。 存储:java类信息、运行时常量池、静态变量、即时编译器编译后的代码等数据JDK 1.8,称为 元空间 metaSpace,在直接内存中。 存储:类的信息、常量池放到了本地内存中,将常量池和静态变量放到了Java堆里参数: -XX:MaxmetaspaceSize

程序计数器:保存当前线程锁正在执行的字节码指令的地址;为了线程切换后能恢复到正常执行的位置。

本地方法栈: native方法,JNI,用java 调用 c、c++实现的本地方法库。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785733.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号