中国少数民族网站建设linux wordpress教程
中国少数民族网站建设,linux wordpress教程,代码网站怎么制作,高新技术企业网站怎么做1 什么是 JVM 内存模型 JVM 需要使用计算机的内存#xff0c;Java 程序运行中所处理的对象或者算法都会使用 JVM 的内 存空间#xff0c;JVM 将内存区划分为 5 块#xff0c;这样的结构称之为 JVM 内存模型。 2 JVM 为什么进行内存区域划分 随着对象数量的增加#xff…1 什么是 JVM 内存模型 JVM 需要使用计算机的内存Java 程序运行中所处理的对象或者算法都会使用 JVM 的内 存空间JVM 将内存区划分为 5 块这样的结构称之为 JVM 内存模型。 2 JVM 为什么进行内存区域划分 随着对象数量的增加 JVM 内存使用率也在增加如果 JVM 内存使用率达到 100% 则无法继续运行程序。为了让 JVM 内存可以被重复使用我们需要进行垃圾回收。为了提 高垃圾回收的效率JVM 将内存区域进行了划分。 3 JVM 内存划分 JVM 按照线程是否共享将内存首先分成两大类。 线程独享区 只有当前线程能访问数据的区域线程之间不能共享 线程独享区随线程的创建而创建随线程的销毁而被回收。 线程共享区 所有线程都可以访问的区域 当线程被销毁的时候共享区的数据不会立即回收需要等待达到垃圾回收的阈yu 值之后才会进行回收。 4 程序计数器 程序计数器会记录当前线程要执行指令的内存地址只占用一小部分内存区域只记录一个 地址所以我们认为程序计数器是不会出现内存溢出问题的分区。 5 本地方法栈 Java 中有些代码的实现是依赖于其他非 Java 语言的C 本地方法栈存储的是 维护 非 Java 语句执行过程中产生的数据一般我们认为本地方法栈不会出现内存的问题。 6 虚拟机栈
6.1 虚拟机栈的作用 存放当前线程中所声明的变量包括基本数据类型的数据和引用数据类型的引用。 基本数据类型和引用数据类型划分的标准 1.基本数据类型 变量在声明的时候能够确认占用内存的大小。 2.引用数据类型 变量在声明的时候不能确认占用内存的大小。 引用数据类型将值的引用存放到虚拟机栈中而对象存放在堆内存中引用数据类型占用 4 个字节存放地址。 6.2 栈帧 每一个线程都会对应一个虚拟机栈线程中的每个方法都会创建一个栈帧存放本次方法执 行过程中所需要的所有数据。 如果我们一个线程中有多个方法的嵌套调用虚拟机栈会对栈帧进行压栈和出栈操作。正在 执行的方法一定在栈顶我们只能获取栈顶的栈帧栈帧在虚拟机栈中先进后出。 6.3 栈帧的数据结构 局部变量 存放当前方法的局部变量基本数据类型存值引用数据类型存堆内存地址。 操作数栈 对方法中的变量提供计算的区域。 常量数据的引用 常量数据会存放到方法区的常量池中不管是基本数据类型还是引用数据类型都会存放常量池的地址。 方法返回值的地址 方法返回数据会存到计算机内存的寄存器中。 6.4 虚拟机栈溢出异常 由于栈帧调用的深度太深会出现 虚拟机栈溢出异常SOF 异常。 一般手动方法的调用 是不会出现这个异常的如果出现这个异常 99%是由于递归。 可以通过修改虚拟机栈的内存大小设置栈帧的最大深度指令为 9 -Xss 虚拟机栈内存大小 一般栈帧深度达到 3000~5000 即可 太小虚拟机栈容易溢出。 太大每个线程占据的内存过大影响线程数量。 7 方法区 在 java8 之后我们把方法区称之为元空间MetaSpace方法区在逻辑上属于堆 的一部分但一些具体机制和堆有所区别如一些 JVM 的方法区是可以不进行垃圾回收 的关闭 JVM 时才会释放方法区内存。所以方法区还有一个别名叫非堆目的是和堆分开。 方法区会存储类信息、静态变量、常量JDK8 之后不存放字符串常量、本地机器指令。 如果加载大量 class 文件也会造成方法区内存溢出如一个 tomcat 运行 20~30 个项目。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92009.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!