做java开发以来,有一个问题一直萦绕在脑海,那就是java程序为什么会占用那么多的虚拟内存。之前也没有深究,因为服务器内存够大。但是最近用上了docker容器,每个容器基本上就几个GB的内存,内存占用过大的问题必须得解决了。

- 阅读剩余部分 -

在查看java.sql.DriverManager源码时,发现有这么一个静态方法叫做loadInitialDrivers()。在这个方法里,我发现在项目启动中驱动管理器会从系统变量jdbc.drivers中获取具体的驱动实现并注册,其次会使用SPI注册驱动。这些我在 再谈驱动注册 中已经讲过了,那么什么是SPI?怎么用?

- 阅读剩余部分 -

打包是一个比较头疼的事情,默认maven打包的结果只包含项目本身的代码,如果要执行代码,还得带上依赖。如果希望将所有依赖放到指定的文件夹下,再在目录下写入shell脚本等之类的事情。maven-shade-plugin插件不能满足需求,而maven-assembly-plugin插件能够帮我们合理地归档文件。

- 阅读剩余部分 -