首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
jvm
订阅
chen_ming
更多收藏集
微信扫码分享
微信
新浪微博
QQ
11篇文章 · 0订阅
对象并不一定都是在堆上分配内存的
“随着 JIT 编译器的发展和逃逸分析技术的逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化,所有的对象分配到堆上也渐渐不那么绝对了”。 在编译期间,JIT 会对代码做很多优化,其中有一部分优化的目的就是减少内存堆分配的压力,其中一项重要的技术叫做逃逸分析。 逃逸分析…
JVM也是玄学
有些同学说这是因为GC或者cache missing。但我掐指一算,这些同学可能是错的。 因为,就算空跑这么多次循环也不止15毫秒。 考虑到15毫秒是Windows里计时器的最小间隔,跑出15毫秒只有一个可能:JVM的优化编译器发现整段循环都没有副作用,于是把整个循环全删了。 …
关于JVM堆外内存的一切
Java中的对象都是在JVM堆中分配的,其好处在于开发者不用关心对象的回收。但有利必有弊,堆内内存主要有两个缺点:1.GC是有成本的,堆中的对象数量越多,GC的开销也会越大。2.使用堆内内存进行文件、网络的IO时,JVM会使用堆外内存做一次额外的中转,也就是会多一次内存拷贝。 …
Java应用异常状态监测
老板最近分派了一个任务,说线上客户在部署应用的时候发生了系统级别的OOM,触发了OOM Killer杀掉了应用,让我们解决这个问题。 对于这个任务,我从如下几点开始调研、分析与解决。 当创建进程时,进程都会建立起自己的虚拟地址空间(对于32位系统来说为4g)。这些虚拟地址空间并…
JVM知识点精华汇总
文章对JVM内存区域分布、JVM内存溢出分析、JVM垃圾回收算法/垃圾收集器、JVM性能调优工具及技巧、类加载等部分做了详细描述。 还有个免费的chat,欢迎在这里和大牛们一起学习讨论:https://gitbook.cn/gitchat/activity/5b6c5b33e
JVM之卡表(Card Table)
我们知道,JVM在进行垃圾收集时,需要先标记所有可达对象,然后再清除不可达对象,释放内存空间。那么,如何快速的找到所有可达对象呢? 最简单粗暴的实现,就是每次进行垃圾收集时,都对整个堆中的所有对象进行扫描,找到所有存活对象。逻辑是简单,但性能比较差。 简单粗暴的实现方式,通常都…
HotSpot的7种垃圾收集器组合
HotSpot共有7种垃圾收集器,3个新生代垃圾收集器,3个老年代垃圾收集器,以及G1,一共构成7种可供选择的垃圾收集器组合。 新生代与老年代垃圾收集器之间形成6种组合,每个新生代垃圾收集器都对应2种组合。 注:在Parallel Scavenge收集器架构中本身有PS Mar…
是时候了解一波虚拟机的类加载机制
Java类会被编译为Class文件,这里,编译的过程先不去具体了解,Class文件中存储的各种信息,包括魔数、Class文件的版本、常量池、访问标志、字段表集合等等重要信息,都需要被加载到JVM中之后才能运行和使用。 虚拟机会将Class文件中的描述类的数据加载到内存中,然后对…
理解Java内存模型
最近重新学习一遍《深入学习Java虚拟机》,把之前Java内存模型中模糊的知识重新梳理一遍,这篇文章主要介绍模型产生的问题背景,解决的问题,处理思路,相关实现规则,环环相扣,希望读者看完这篇文章后能对Java内存模型体系产生一个相对清晰的理解,知其然而知其所以然。 在介绍Jav…
JVM的栈上分配
栈上分配是JVM的一个优化选项。 Java的对象一般都是分配在堆内存中的,而JVM开启了栈上分配后,允许把线程私有的对象(其它线程访问不到的对象)打散分配在栈上。这些分配在栈上的对象在方法调用结束后即自行销毁,不需要JVM触发垃圾回收器来回收,因此提升了JVM的性能。 栈上分配…