每年大促都要补习JVM调优,今年我都总结到这里了。
我们在学习JVM的内存管理的时候,我们的思维要跳出Java的局限。我们要这么理解。我们写的Java代码,是运行在JVM上的。
如果让你来实现JVM那么。你会怎么处理呢?
- 公共部分(堆heap)
- `Class字节码`是公共的,是共享的,所有线程都要认识字节码。
- `new的对象`是公共的,也是共享的,所有线程要都能认识这些实例对象,能读取到实例的数据。
- 私有部分 (栈stock)
- Java中每个线程的执行中的代码,及代码中的局部变量等信息是私有的。每个线程之间都要维护一份。
- JVM虚拟栈和本地方法栈。
- 代码是怎么执行的,当然是一
Arthas,热更新线上代码神器
日常开发过程中,可能会遇到小问题,本地代码改完后,总得重新打包部署,线上代码才会生效,这样太麻烦了,这个时候就可以考虑使用Arthas(阿尔萨斯)工具来热更新线上代码,先使线上的功能能使用,后面有大的迭代版本的时候再打包部署。笔者使用了这个工具,发现这个操作实在是骚的很,太好用了,在此做下笔记,以供后续参考。