- 博客(6)
- 资源 (2)
- 收藏
- 关注
原创 Mapstruct 使用教程
MapStruct是一个Java注释处理器,用于生成类型安全的bean映射类。开发者要做的就是定义一个映射器接口,该接口声明任何必需的映射方法。在编译期间,MapStruct将生成此接口的实现。此实现使用简单的Java方法调用在源对象和目标对象之间进行映射,即没有反射或类似内容。与手动编写映射代码相比,MapStruct通过生成繁琐且易于出错的代码来节省时间。遵循配置方法上的约定,MapStruct使用合理的默认值,但在配置或实现特殊行为时不加理会。
2023-04-16 22:01:52 834
转载 JVM代码缓存区CodeCache原理及用法解析
大家都知道javac编译器,把java代码编译成class字节码,它和JIT编译器的区别是,javac只是前端编译(有的叫前期编译),jvm是通过执行机器码和底层交互的,这样我们编写的业务代码才能生效。方法计数器,统计被多次调用的方法次数,该计数器统计的并不是方法被调用的绝对次数,而是在一段时间内方法被调用的次数。上面讲到了JVM会对频繁使用的代码,即热点代码(Hot Spot Code),达到一定的阈值后会编译成本地平台相关的机器码,并进行各层次的优化,提升执行效率。
2023-02-25 01:19:25 1810
转载 JVM Code Cache空间不足,导致服务性能变慢
Java代码在执行次数达到一个阈值会触发JIT编译,一旦代码块被编译成本地机器码,下次执行的时候会直接运行编译后的本地机器码。所以这本地机器码必须被缓存起来,而缓存这个本地机器码的内存区域就是Code Cache,它并不属于Java堆的一部分,除了JIT编译的代码之外,Java所使用的本地方法代码(JNI)也会存在codeCache中。
2023-02-24 21:37:39 1939
转载 CodeCache 深入了解
后来就有了JIT即时编译器,当虚拟机发现某个方法或代码块运行特别频繁时,就为了提高代码执行效率,JIT会把这些代码编译成与本地平台相关的机器码,下一次执行就会直接执行编译后的机器码,并进行各个层次的优化。经过JIT编译后的代码被缓存的内存区域就是CodeCache,这是一块独立于java堆之外的内存区域,并且java的本地方法代码JNI也存储在该区域。,JIT编译器被停止了,并且不会被重新启动,此时会回归到解释执行,被编译过的代码仍然以编译方式执行,但是尚未被编译的代码就只能以解释方式执行了。
2023-02-24 21:23:00 1329
转载 闲谈JVM:浅谈CodeCache与JIT
当一个方法瞬时流量激增,会瞬间达到JIT编译的阈值,JVM会执行JIT编译,将热点代码编译成机器码,并进行缓存,但是当热点代码过多,JIT编译的压力会激增,带来的后果就是会将系统负载瞬时拉高,CPU使用也会飙升,导致整体服务整体的性能降低。本篇我们了解了JVM中的另外一个比较重要的区域CodeCache,也了解了JVM中的动态编译机制JIT,针对大多数小流量的应用服务,对于这两个JVM的相关配置可以不用特别关注,但是针对大流量并非的互联网应用场景,则是需要关注的,配置合理合适的值,以保证服务的稳定运行。
2023-02-24 11:21:43 852 1
java springside
2014-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人