摘要:
经过前面对于JVM垃圾回收学习了纯理论相关的东东,这次则要开始用代码编写大量的实验来对理论进行佐证,下面开始,先在IntelliJ IDEA工程中新建一个全新的包: 然后新建一个类: 接下来则会编写一个超级简单的程序,程序虽简单,但是通过增加一些JVM的参数可以用简单的程序来阐述JVM垃圾回收的很多 阅读全文
摘要:
继续上次【https://www.cnblogs.com/webor2006/p/10740084.html】的理论继续。。有点吐血的感觉,都不知道学了这么一大堆理论有何实际意义,本身JVM就是个理论体系比较多的东东,所以理论不得不去面对,继续硬着头皮往前进。 内存结构 这个在之前的学习中都已经学习 阅读全文
摘要:
继续接着上一次【https://www.cnblogs.com/webor2006/p/10729649.html】的来学习,上次在结尾处提到了JVM常见的GC算法,如下: 接下来则逐一的对其进行学习,不过还是纯理论,比较枯燥但是必须得过一遍。 标记-清除算法(Mark-Sweep): 算法分为“标 阅读全文
摘要:
JVM学习到这里,终于到学习最兴奋的地方了 垃圾回收,在学习它之前还得对JVM垃圾回收相关理论知识进行了解,然后再通过实践来加深对理论的理解,下面直接开始了解相关的理论: JVM运行时内存数据区域: 这个在之前其实已经介绍过了,对于JVM的垃圾回收一定是回收内存里面的内容,所以如果不对内存区域的划分 阅读全文
摘要:
关于热更新如今面试也是基本上都会提及到的,我上一家公司用的是tinker,而这里准备研究的也是它的原理,而关于tinker的原理网上也是一大堆文章进行介绍,为了对它有个更加进一步的认识,所以自己动手来实现类似于tinker的效果,当然关于补丁这块是如何打的不在这次研究的范围,这里只研究最最核心的,能 阅读全文
摘要:
jstack: 在上一次【https://www.cnblogs.com/webor2006/p/10669472.html】jcmd中也可以获取线程的堆栈信息,回顾一下: 其实在JDK中还有另一个专门查看或导出Java应用程序中线程的堆栈信息jstack,具体瞅下它的使用: 咱们还是以之前死锁的M 阅读全文
摘要:
继续来根据之前的那篇infoq的文章的介绍熟悉工具,上一次咱们学习使用了: 接下来学习它里面提到的另一个工具: jcmd是一个非常之强大的命令行工具,能输出很多很多的信息,也是在处理JVM的一些问题经常要接触到的一个工具,这个命令也是需要一个进程ID的,而在之前咱们来查询pid时是使用了一个不是特别 阅读全文
摘要:
在上一节【https://www.cnblogs.com/webor2006/p/10662363.html】最后其实是抛出了infoq关于元空间介绍的文章中所涉及到JDK自带的一些工具的使用,这次咱们来亲自来对文中提到的jmap和jstat工具进行实践,如下: 对于JDK自带的工具其实主要是分为两 阅读全文
摘要:
回顾一下上一次对于这次做的实验的一个背景说明: 这里将借助cglib这个库来完成动态类的创建,为啥要使用它?因为使用简单,二是在程序运行期可以动态的生成类,动态生成类之后生成类的元数据就会落入到元空间当中,这样我们就可以不断来增加类的生成从而来增加元空间元数据的增加,另外在上一次说过元空间默认的大小 阅读全文
摘要:
在上一次【https://www.cnblogs.com/webor2006/p/10652547.html】使用到了jconsole工具来检测线程的执行情况,其中这里面有一个检测死锁的功能,如下: 所以这来使用一下该功能,先来编写一个死锁的程序,要想产生死锁肯定至少得要有2个线程,其中一个线程持有 阅读全文