- 博客(14)
- 收藏
- 关注
原创 Mysql调优总结(持续更新中)
查询SQL尽量不要使用select,而是select具体字段。反例子:select * from employee;正例子:select id,name from employee;反例:select id,name from employee where name=‘jay’正例:select id,name from employee where name=‘jay’ limit 1;反例:正例://方案一 :返回上次查询的最大记录(偏移量)
2024-07-11 10:36:08
300
原创 JVM的性能优化
对象逃逸的本质是对象指针的逃逸。在计算机语言编译器优化原理中,逃逸分析是指分析指针动态范围的方法,它同编译器优化原理的指针分析和外形分析相关联。当变量(或者对象)在方法中分配后,其指针有可能被返回或者被全局引用,这样就会被其他方法或者线程所引用,这种现象称作指针(或者引用)的逃逸(Escape)。通俗点讲,如果一个对象的指针被多个方法或者线程引用时,那么我们就称这个对象的指针(或对象)的逃逸(Escape)。什么是逃逸分析?
2024-06-16 16:27:13
1685
原创 执行引擎详解
javac编译器将Person.java源码文件编译成class文件[我们把这里的编译称为前期编译],交给JVM运行,因为JVM只能认识class字节码文件。同时在不同的操作系统上安装对应版本的JDK,里面包含了各自屏蔽操作系统底层细节的JVM,这样同一份class文件就能运行在不同的操作系统平台之上,得益于JVM。这也是Write Once,Run Anywhere的原因所在。
2024-06-11 07:13:20
1524
原创 垃圾回收器篇之三:G1
优先调整堆的大小让JVM自适应完成。如果内存小于180M,使用串行收集器如果是单核、单机程序,并且没有停顿时间的要求,串行收集器如果是多CPU、需要高吞吐量、允许停顿时间超过1秒,选择并行或者JVM自己选择如果是多CPU、追求低停顿时间,需快速响应(比如延迟不能超过1秒,如互联网应用),使用并发收集器官方推荐G1,性能高。现在互联网的项目,基本都是使用G1。
2024-06-03 21:00:46
823
原创 垃圾回收器篇之二:CMS
这款收集器是HotSpot虚拟机中第一款真正意义上的并发收集器,他第一次实现了让垃圾收集线程与用户线程同时工作。垃圾收集算法采用标记-清除算法(因为CMS强调低延迟,所以没有采用更耗费时间的标记-压缩算法),并且也会STW,
2024-05-31 09:58:08
935
原创 垃圾回相关收算法详解
任意顺序整理实现简单,且执行速度快,但任意顺序可能会将原本相邻的对象打乱到不同的高速缓存行或者是虚拟内存页中(理解为打乱到内存各个地方),会降低赋值器的局部性。包括他只能处理固定大小的对象,一旦对象大小不固定,就会增加其他的逻辑。所有现代的标记-整理回收器均使用滑动整理,它不会改变对象的相对顺序,也就不会影响赋值器的空间局部性。复制式回收器甚至可以通过改变对象布局的方式,将对象与其父节点或者兄弟节点排列的更近以提高赋值器的空间局部性。
2024-05-30 11:27:07
1682
原创 垃圾回收器篇之一:Serial、Serial Old、ParNew、Parallel Scavenge、Parallel Old
吞吐量:运行用户代码的时间占总运行时间的比例(总运行时间:程序的运行时间十内存回收的时间)垃圾收集开销:吞吐量的补数,垃圾收集所用时间与总运行时间的比例。暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间。收集频率:相对于应用程序的执行,收集操作发生的频率。内存占用:java堆区所占的内存大小。快速:一个对象从诞生到被回收所经历的时间。在最大吞吐量优先的情况下,降低停顿时间。
2024-05-30 10:44:35
935
原创 类加载子系统
可以支持一些个性化的扩展功能。父类加载器为应用程序加载器JVM必须知道一个类是由启动类加载器还是由用户类加载器加载的。类的信息会保存到方法区中,jvm会将这个类的加载器的一个引用作为类型信息的一部分保存在方法区中。
2024-05-27 19:09:42
770
原创 @ResponseBody 转化成json后与实体类字段名不一致
@ResponseBody 转化成json后与实体类字段名不一致实体类A字段名由B改成C后,Controller 中返回的List中字段名仍然是C经过@ResponseBody返回到前台后又变成了B
2019-11-13 11:17:50
924
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人