23-Spring_JVM-3

1.测试

在这里先通篇讲一下,一般情况下,自己写的后台项目,是肯定要用工具进行测试的,之前有讲过Jmeter可以查看qps等信息

还有别的工具,可以测死锁,内存占用情况,线程情况等:

           Jconsole:JDK自带的坚持软件,UI有点丑,这里就可以检测出死锁情况

           Visual VM:也是Java自带的检测软件,UI比Jconsole好看很多,这里垃圾回收情况,然后这里也有个dump线程报告

一般情况下,客户端卡是因为IO阻塞,后台这里可以搞什么限流熔断等

2.字节码技术介绍

之前android的打码文件.这里也是都是.java文件,但是编译以后的java代码都是.class文件,需要用java反编译工具,进行反编译,这样就可以看到.java代码了.

例子:之前在spring看到过有类似@config这种

在这里有一个小例子,在使用lombok框架以后

在类的上方,写到了@Getter & @Setter ,这个就是自动会给全局变量,生成get和set方法,这里使用到的就是字节码技术

同样,cglib也是使用的字节码技术,还有AOP(暂时只知道这个叫做面向切面编程)

3.具体的字节码技术

javassist和ASM都属于字节码技术

cglib就是基于ASM,javassist性能比ASM略差,但是使用比ASM简单

而javassist的性能是高于反射

javaassist的缺点:不支持一些extends,以及continue,break的表达式

4.demo

这里在讲到字节码技术的时候,用到了很多陌生的api,用api来创建.class文件,然后讲到了热部署原理,其本质上就是动态来修改.class文件,其实就是一种IO操作

之前spring书里面的讲什么"依赖注入"阿...把简单的东西讲复杂不算本事,反倒这种行为很弟弟

5.类加载器

jvm在运行代码的时候,是把.class文件加载到jvm内存中,而且这种加载行为,只会加载一次,如果你在第一次加载了以后,中途修改了.class文件,那么依然不会起到作用,所以,在实际项目中,就算修改了.class文件,也是需要重启,除非用热部署

6.题外话,几个小知识

之后肯定是要学maven的...之后再学

静态代码块是在构造方法之前创建的,静态代码块的调用与全局变量的调用顺序,是按照从上到下

Object obj = new Object(),在这里,new出来的对象,自然是放在堆内存,但是其引用obj是放在栈中的

7.热部署 & 自定义类加载器

热部署,就是我挂在服务器的代码,可以随时进行修改,而不用重启,但是这样很好性能

一般情况下,都是不会使用热部署的

在这里,热部署,就是自己写一个类加载器,然后把之前的.class文件覆盖掉,并且重新load到jvm中,原理很简单,api看起来有点长,不过这不算啥...

8.分布式配置中心

一般情况下,代码尽量不要变...而是要修改配置....

总结:

考虑到自己工作,之前后台经常出现很多bug,在后台项目写完了以后,测试,无论是性能,死锁,CPU占用率,措施,防攻击,这些测试都是要做的,这些都是很基本的东西........Jmeter测吞吐量,Visual vm测内存情况,打印日志,看程序是否稳定,无差错...没有测试就直接上的,真的不行,纯属弟弟行为...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值