第二部分_第二章 自动内存管理机制(java内存区域与内存溢出异常)

news/2024/7/20 15:51:56 标签: java, 内存管理, 运维

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

运行时数据区域

直接内存

频繁被使用

jdk1.4加入NIO(New Input/Output),一种基于通道与缓冲区的I/O方式,

可以使用Native函数库直接分配堆外内存,通过java堆中的DirectByteBuffer对象作为这块内存的引用进行操作。这样避免了在Java堆和Native堆中来回复制数据,提高性能。

注意:此部分的内存不受java堆大小的限制,收本机总内存的限制,配置虚拟机内存时,不能够忽略此处的内存,否则会导致动态扩展时出现OutOfMemoryError异常。

HotSpot

对象的创建:

new指令 --》检查指令参数能否在常量池中定位一个类的符号引用,这个符号代表的类是否已被加载、解析和初始化过。----》如果没有,必须先执行相应的类加载过程 -----》为新生对象分配内存

分配内存方式:指针碰撞(堆内存绝对规整)

                         空闲列表(堆内存不是规整的)

   是否规整由采用的垃圾收集器是否带有压缩整理功能决定。

对象的频繁创建(高并发)解决方案:

           方案一:同步处理,采用CAS配上失败重试,保证跟新操作的原子性;

           方案二:内存分配的动作按照线程划分在不同的空间之中进行。(本地线程分配缓冲 Thread Local Allocation Buffer ,TLAB)

---》虚拟机对对象进行必要的设置(该对象是哪个类的实例,对象的哈希码值)

----》一个对象产生了(从虚拟机视角)

对象创建刚刚开始(从java程序的视角) ------<init>方法还没有执行。

对象的内存布局:

 

转载于:https://my.oschina.net/u/2356966/blog/741268


http://www.niftyadmin.cn/n/1130407.html

相关文章

86条忠告等你大学毕业了再看会后悔一辈子

一&#xff0c; 别以为在学生会你能得到你曾经想要的。工作的热情很可能因为你所看到的所经历的一些事而改变&#xff0c;但是也不必惧怕。你有大一一年来适应或者承受&#xff0c;并做出是继续坚持还是退出的决定。 二&#xff0c; 大学可能有真实的爱情&#xff0c;但是…

EM最大期望算法

EM最大期望算法 EM算法是一种求解最大似然估计的方法&#xff0c;通过观测样本&#xff0c;来找出样本的模型参数。最大似然估计是一种通过已知结果&#xff0c;估计参数的方法。 EM算法中的E步骤就是通过旧的参数来计算隐藏变量&#xff0c;M步骤是通过得到的隐藏变量的结果来…

webpack CommonsChunkPlugin详细教程

1.demo结构&#xff1a; 2.package.json配置&#xff1a; {"name": "webpack-simple-demo","version": "1.0.0","description": "","main": "index.js","scripts": {"webpack…

Microsoft .Net Remoting系列专题之一 Net Remoting基础篇

一、Remoting基础 什么是Remoting&#xff0c;简而言之&#xff0c;我们可以将其看作是一种分布式处理方式。从微软的产品角度来看&#xff0c;可以说Remoting就是DCOM的一种升级&#xff0c;它改善了很多功能&#xff0c;并极好的融合到.Net平台下。Microsoft .NET Remoting 提…

关联规则挖掘Apriori

关联规则挖掘Apriori及FP-Growth算法 关联规则中的几个概念&#xff1a; 支持度&#xff1a;某个商品组合出现的次数与总次数之间的比例。支持度越高&#xff0c;代表这个组合出现的频率越大。 置信度&#xff1a;是个条件概念&#xff0c;即在A发生的情况下&#xff0c;B发生…

对称的二叉树

请实现一个函数&#xff0c;用来判断一颗二叉树是不是对称的。注意&#xff0c;如果一个二叉树同此二叉树的镜像是同样的&#xff0c;定义其为对称的。 /* public class TreeNode {int val 0;TreeNode left null;TreeNode right null;public TreeNode(int val) {this.val v…

[原创]测试用例设计之流程图法

[原创]测试用例设计之"流程图"法 流程图测试用例设计方法&#xff0c;简而易见的理解为&#xff0c;根据流程图的描述来设计测试用例&#xff0c;覆盖其每个分支的走向&#xff0c;要求符合流程图设计要求&#xff0c;最大程度上的满足要求&#xff1b;当然此类设计测…

被VB6搞死。。。。。。。鸟

近日在做一个微型项目&#xff0c;用VB6做&#xff0c;在类模板中定义&#xff0c;Public Event GetSubTable(pMainId As String, pID As String,pSaveDatas() As DataInfor, pHaveMore As Boolean, pCancel As Boolean)在IDE中可以完美运行&#xff0c;但在编译后就出现自动退…