
JVM优化
以实例为线索,从基础了解jvm,一步步进行优化jvm
阿~呆
丙辰中秋,欢饮达旦,大醉,作此篇,兼怀子由
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM优化之Tomcat8优化
待续原创 2020-06-14 18:23:11 · 585 阅读 · 0 评论 -
JVM优化之jvm分配内存如何保证线程安全
1,堆是JVM中所有线程共享的,因此在其上进行对象内存的分配均需要进行加锁,这也导致了new对象的开销是比较大的 2,JVM为了提升对象内存分配的效率,对于所创建的线程都会分配一块独立的空间TLAB(Thread Local Allocation Buffer), 其大小由JVM根据运行的情况计算而得,在TLAB上分配对象时不需要加锁,因此JVM在给线程的对象分配内存时会尽量的在TLAB上分配, 在这种情况下JVM中分配对象内存的性能和C基本是一样高效的,但如果对象过大的话则仍然是直接使用堆空原创 2020-06-11 21:52:22 · 1912 阅读 · 0 评论 -
Tomcat优化之tomcat的三种运行模式
tomcat的运行模式有3种:bio 默认的模式,性能非常低下,没有经过任何优化处理和支持nio nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。apr 安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能在正常的使原创 2020-06-11 00:22:31 · 505 阅读 · 0 评论 -
Tomcat优化之执行器
在tomcat中用户每一个请求都是一个线程,所以可以使用线程池来提高tomcat性能修改conf目录下 server.xml文件#将注释打开,开启执行器<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="50" prestartminSpareThreads="true" maxQueueSize="100"/>参数说明:maxThreads:原创 2020-06-11 00:15:27 · 297 阅读 · 0 评论 -
Tomcat优化禁用AJP协议
登录tomcat 在服务状态页面中可以看到,默认状态下会启用AJP服务,并且占用8009端口。什么是AJP呢?AJP(Apache JServer Protocol) AJPv13协议是面向包的。WEB服务器和Servlet容器通过TCP连接来交互;为了节省SOCKET创建的昂贵代价,WEB服务器会尝试维护一个永久TCP连接到servlet容器,并且在多个请求和响应周期过程会重用连接有两种方式请求web服务第一种:请求tomcat服务器8080 端口 直接请求第二种:生产环境常用,在web用原创 2020-06-09 23:49:18 · 11185 阅读 · 0 评论 -
JVM优化之G1垃圾收集器如何做到可预测停顿的
G1垃圾收集器相关内容可以参考[G1垃圾收集器基础]一般的垃圾收集器一般的垃圾回收器把内存分成三类: Eden(E), Suvivor(S)和Old(O), 其中Eden和Survivor都属于年轻代,Old属于老年代,新对象始终分配在Eden里面,经过第一次垃圾回收的对象就被移动到Survisor区了也有可能是old区。这样的好处是1、把垃圾回收这个复杂的问题分成两个小的问题,针对于年轻代的对象,因为对象来的快去的也快所以垃圾比较多垃圾回收会比较频繁,但是年轻代在垃圾回收的时候需要暂停应用(因为需要清原创 2020-06-08 23:14:44 · 1248 阅读 · 0 评论 -
JVM优化之G1垃圾收集器
简单介绍G1G1垃圾收集器在jdk1.7中开始使用,oracle官方是计划在1.9中变成默认的垃圾收集器替代GMS垃圾收集器,可以看出来垃圾收集器的未来使用的是G1G1的设计原则:简化JVM的性能调优,以前在做调优的时候针对老年代、年轻代等进行调优,G1就变得简单,只需要三个步骤即可以调优,1、开启G1垃圾收集器;2、设置最大的堆内存;3、设置最大的停顿时间。在G1中提供了三种垃圾收回收模式,包括Young GC(年轻代gc)、Mixed GC(混合gc)、Full GC(堆内存的全量gc)G1原理原创 2020-06-07 23:09:47 · 1481 阅读 · 0 评论 -
JVM垃圾回收算法理解3之复制算法与分代算法
将内存分为两个区域,内存1和内存2,使用的时候使用内存1,内存2 是空的,当内存1进行垃圾回收的时候,将存活对象复制到内存2,将内存1中的所有的对象回收,然后在将内存2与内存1 进行角色互换,这个时候内存1中的就没有内存碎片的问题所以进行垃圾回收的时候,可以看内存中的垃圾对象多还是存活对象多,当垃圾对象多的时候使用复制算法比较划算...原创 2020-06-04 01:13:47 · 386 阅读 · 0 评论 -
JVM垃圾回收算法理解2之标记清除算法和标记压缩算法
待续原创 2020-06-03 00:27:49 · 960 阅读 · 0 评论 -
JVM垃圾回收算法理解1之引用计数法快速理解
JVM垃圾回收之引用计数法引用计数法是历史最悠久的一种算法,引用:假设一个对象A 中定义了一个B 对象中的属性这个称为A 引用B ;原理: 对象B 引用对象A 那么对象A 的计数器就+1,同理被其他对象引用,计数器就+1 ,当对象B 引用失败了,那么对象A 的计数器就-1,当计数器值为0 时,gc就会将A 回收;优点:实时性很高,不用等到内存不够用的时候才去垃圾回收,运行时根据对象的计数器是否为0来判断,当计数器为0 的时候就进行回收,在垃圾回收的整个过程中,应用不需要挂起,如果去申请内存原创 2020-06-01 00:10:44 · 366 阅读 · 0 评论 -
JVM优化之常用参数
jvm优化为什么要做jvm的优化,在正常的本地开发中很少能用到,但是一旦程序部署到生产环境中就很可能出现应用运行到一半卡住了没有日志输出,程序没有反应,或者说对服务器做请求但是服务器没有任何的响应,或者服务器的cpu突然升高,或者出现内存溢出的情况,多数情况重启可以解决但是并不能依赖重启来解决问题,这个 时候就需要让程序不仅仅能够跑起来更需要跑的更快。jvm三种参数类型jvm 有三种参数类型,分别是 -help 、-version 标准参数,在各个jdk版本都有保留属于稳定参数;-X参数(-Xint、原创 2020-06-01 00:12:56 · 266 阅读 · 0 评论