java虚拟机
静,思
故不积跬步,无以至千里;不积小流,无以成江海
展开
-
java堆内存模型
1. java堆内存划分分析: 1. 这是jdk1.8以前的堆内存划分。 2. 新生代主要有Eden区域,存活区1,存活区2.(主要是刚刚创建的对象) 3. 老年代(经过jvm垃圾回收之后,对象依然存活) 4. 永久代(jvm垃圾回收机制不可能进行回收的),jdk1.8以后改为元区域,这个区域的内存时使用电脑的直接内存 5. 在每一...原创 2018-12-26 18:35:44 · 398 阅读 · 0 评论 -
java堆内存参数调整
1.java堆内存参数 我们为什么需要进行jvm堆内存调整? 因为jvm垃圾回收机制,主要发生在堆内存区域,从堆的内存结构划分,里面存在伸缩区概念,那么频发的伸缩会影响jvm性能,所以我们需要去掉伸缩区。只需要-Xms和-Xmx大小相等,即堆内存里面-Xms和-Xmx是比较重要的参数。我们也可以将垃圾回收的日志打印出来。这时需要-XX:+PrintGCDetails参数。...原创 2018-12-28 20:10:32 · 1175 阅读 · 0 评论 -
java内存模型
当我第一次见到java的内存模型时,心里在想为什么需要java内存模型,它可以见解决什么问题?,java的内存模型是如何进行设计的,带着这样的疑问我们就可以能够深入的理解java的内存模型。1. 为什么需要java内存模型?我们先了简单了解一下cpu和内存的关系,指令都是有由cpu进行执行的,那么数据的有什么进行管理的呢?是放在主存里面,也就是计算机的物理内存,但是随着计算里面的cp...原创 2018-12-24 09:15:17 · 380 阅读 · 0 评论 -
jvm内存溢出
1.内存泄漏和内存溢出区别?内存泄漏:系统分配的内存没有被回收。内存溢出:分配的内存空间超过系统内存。2. jvm内存泄漏的原因分析?jvm由5大块组成:堆,栈,本地方法栈,程序计数器,方法区,这里说一下栈它的主要记录方法的执行和对象的引用。堆则存在真正的引用的对象。方法的执行的结束,可能伴随着java栈内存的自动清除,但是堆内存的对象不一定会随着栈内存的清空而清空,这样的话,...原创 2019-01-03 20:06:13 · 1898 阅读 · 0 评论 -
java对象访问模式
1. java对象访问模式为什么我们要引入java对象访问模式,我们知道Object obj = new Object();但是里面的具体细节,我们还不是特别了解。 分析:Object obj 其实就是声明一个对象。保持在栈内存之中,也保存了堆内存的引用 new Object() 其实是实例化对象,该对象保存在堆内存之中。但是我们应该知道ob...原创 2018-12-25 09:10:53 · 168 阅读 · 0 评论 -
jvm垃圾收集策略
垃圾回收对象主要针对是年轻代和老年代,老年代的内存空间比年轻代的内存空间大,所以我们应该避免进行老年代的内存空间的垃圾回收。1.年轻代GC回收的策略 算法思想:复制 实现过程:从根集合出发,扫描出存活的对象,并且把存活对象复制到一块新的内存空间。 算法的优化:因为Eden会产生大量的对象,为了加快内存的分配速度,实行Bump-The-Pointer技术,每一次记...原创 2019-01-06 11:54:32 · 257 阅读 · 1 评论 -
G1收集器
1. 为什么需要G1收集器?主要是为了适应大内存和多CPU环境,取消了原来的年轻代,老年代的划分,而是直接按照将堆内存划分为若干个区域。每一个子区域内存大小是1M-32M,最多可以划分2048个空间,最大的内存支持32*2048 =65535 64G内存。2. G1使用场景? 垃圾收集线程和应用线程并发执行,和CMS一样 空闲内存压缩时避免冗长的暂停时间3. G1的垃圾...原创 2019-01-06 14:40:02 · 259 阅读 · 0 评论