jvm
-星星-
千万不要在正确的时间干错误的事情,与君共勉!!!
展开
-
JVM 堆、栈、方法区的区别
结构化语言里函数(子程序)调用最方便的实现方式就是用栈,以至于现在绝大部分芯片都对栈提供芯片级的硬件支持,一条指令即可搞定栈的pop操作。栈的好处是:方便、快、有效避免内存碎片化。栈的问题是:不利于管理大内存(尤其在16位和32位时代)、数据的生命周期难于控制(栈内的有效数据通常是连续存储的,所以pop时后申请的内存必须早于先申请的内存失效),所以栈不利于动态地管理并且有效地利用宝贵的内存资源。于...转载 2018-05-03 15:36:02 · 237 阅读 · 0 评论 -
JDK1.8 JVM运行时数据区域划分
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bruce128/article/details/79357870 一、JDK1.8 JVM运行时数据区域概览这里介绍的是JDK1.8 JVM运行时内存数据区域划分...转载 2018-12-18 17:21:03 · 876 阅读 · 0 评论 -
浅谈对JIT编译器的理解
1. 什么是Just In Time编译器?Hot Spot 编译当 JVM 执行代码时,它并不立即开始编译代码。这主要有两个原因:首先,如果这段代码本身在将来只会被执行一次,那么从本质上看,编译就是在浪费精力。因为将代码翻译成 java 字节码相对于编译这段代码并执行代码来说,要快很多。当 然,如果一段代码频繁的调用方法,或是一个循环,也就是这段代码被多次执行,那么编译就非常值得...转载 2018-12-18 14:55:11 · 521 阅读 · 0 评论 -
JVM Minor GC、Major GC和Full GC
Minor GC从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC。这一定义既清晰又易于理解。但是,当发生Minor GC事件的时候,有一些有趣的地方需要注意到:当 JVM 无法为一个新的对象分配空间时会触发 Minor GC,比如当 Eden 区满了。所以分配率越高,越频繁执行 Minor GC。内存池被填满的时候,其中的内容全部会被复制,指针会从0开始跟...转载 2018-05-07 14:41:45 · 111 阅读 · 0 评论 -
JVM jstat
1.介绍Jstat用于监控基于HotSpot的JVM,对其堆的使用情况进行实时的命令行的统计,使用jstat我们可以对指定的JVM做如下监控:类的加载及卸载情况查看新生代、老生代及metaSpace的容量及使用情况查看新生代、老生代及metaSpace的垃圾收集情况,包括垃圾回收的次数及垃圾回收所占用的时间查看新生代中Eden区及Survior区中容量及分配情况等jstat工具特别强大,它有众多的...转载 2018-05-07 14:38:28 · 267 阅读 · 0 评论 -
JVM 新生代老年代
1.为什么会有年轻代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域进行回收,这样就会腾出很大...转载 2018-05-04 14:14:04 · 104 阅读 · 0 评论 -
JVM 如何判定哪些对象可回收?
在堆内存中存放着Java程序中几乎所有的对象实例,堆内存的容量是有限的,Java虚拟机会对堆内存进行管理,回收已经“死去”的对象(即不可能再被任何途径使用的对象),释放内存。垃圾收集器在对堆内存进行回收前,首先要做的第一件事就是确定这些对象中哪些还存活着,哪些已经死去。Java虚拟机是如何判断对象是否可以被回收的呢? 引用计数算法 引用计数算法的原理是这样的:给...转载 2018-05-04 11:16:35 · 227 阅读 · 0 评论 -
JVM GC算法深度解析
在前面的文章里介绍了可达性分析算法,它为我们解决了判定哪些对象可以回收的问题,接下来就该我们的垃圾收集算法出场了。不同的垃圾收集算法有各自不同的优缺点,在JVM实现中,往往不是采用单一的一种算法进行回收,而是采用几种不同的算法组合使用,来达到最好的收集效果。接下来详细介绍几种垃圾收集算法的思想及发展过程。 最基础的收集算法 —— 标记/清除算法 之所以说标记/...转载 2018-05-04 11:15:29 · 150 阅读 · 0 评论 -
JDK工具(查看JVM参数、内存使用情况及分析等)
在JDK的bin目录下有很多命令行工具: 我们可以看到各个工具的体积基本上都稳定在27kb左右,这个不是JDK开发团队刻意为之的,而是因为这些工具大多数是jdk\lib\tools.jar类库的一层薄包装而已,他们的主要功能代码是在tools类库中实现的。命令行工具的好处是:当应用程序部署到生产环境后,无论是直接接触物理服务器还是远程telnet到服务器上都会受...转载 2019-09-06 13:33:28 · 617 阅读 · 0 评论