Category: JAVA

在java中使用SPI创建可扩展的应用程序

在java中使用SPI创建可扩展的应用程序

简介 什么是可扩展的应用程序呢?可扩展的意思是不需要修改原始代码,就可以扩展应用程序的功能。我们将应用程序做成插件或者模块。 这样可以在不修改原应用的基础上,对系统功能进行升级或者定制化。 本文将会向...

一文读懂jar包的小秘密

一文读懂jar包的小秘密

简介 java程序员每天不是在创建jar包就是在创建jar包的路上,并且各种依赖引用都是以jar包的形式展示的。但是随着现代IDE的出现,我想很多程序员已经基本上很少直接和jar包打交道了。 换句话说...

troubleshoot之:GC调优到底是什么

troubleshoot之:GC调优到底是什么

简介 我们经常会听到甚至需要自己动手去做GC调优。那么GC调优的目的到底是什么呢?让程序跑得更快?让GC消耗更少的资源?还是让程序更加稳定? 带着这些疑问来读一下这篇文章,将会的到一个系统的甚至是不一...

troubleshoot之:使用JFR分析性能问题

troubleshoot之:使用JFR分析性能问题

简介 java程序的性能问题分析是一个很困难的问题。尤其是对于一个非常复杂的程序来说,分析起来更是头疼。 还好JVM引入了JFR,可以通过JFR来监控和分析JVM的各种事件。通过这些事件的分析,我们可...

troubleshoot之:使用JFR解决内存泄露

troubleshoot之:使用JFR解决内存泄露

简介 虽然java有自动化的GC,但是还会有内存泄露的情况。当然java中的内存泄露跟C++中的泄露不同。 在C++中所有被分配的内存对象都需要要程序员手动释放。但是在java中并不需要这个过程,一切...

troubleshoot之:用control+break解决线程死锁问题

troubleshoot之:用control+break解决线程死锁问题

简介 如果我们在程序中遇到线程死锁的时候,该怎么去解决呢? 本文将会从一个实际的例子出发,一步一步的揭开java问题解决的面纱。 死锁的代码 写过java多线程程序的人应该都知道,多线程中一个很重要的...

JVM系列之:再谈java中的safepoint

JVM系列之:再谈java中的safepoint

safepoint是什么 java程序里面有很多很多的java线程,每个java线程又有自己的stack,并且共享了heap。这些线程一直运行呀运行,不断对stack和heap进行操作。 这个时候如果...

JVM系列之:从汇编角度分析NullCheck

JVM系列之:从汇编角度分析NullCheck

简介 之前我们在讲Virtual call的时候有提到,virtual call方法会根据传递的参数实例的不同而进行优化,从而优化成为classic call,从而提升执行效率。 今天我们考虑一下,在...