导语
关于亿级流量的秒杀系统的调优,其实并不仅仅包括对于JVM的调优,还有包括网络调优、IO调优、负载均衡调优,缓存调优,中间件调优等等一些东西内容的调优计划,一个亿级流量的秒杀系统仅仅是通过JVM的调优来实现一个高性能真的它所起到的作用很小很小。只要有资金,可以把超级计算机改造成服务器。当然这个是开玩笑的。下面的博客中,这通过一个小例子来看看具体在支持秒杀系统流量的应用中怎么让Java应用程序达到一个最优的运行效果。
文章目录
JVM性能调优
在JVM性能调优的系列中,也提到了很多的概念。其实对于JVM的性能调优其实就是对堆内存的调优。怎么让堆内存达到一个高效的利用。对于堆来说,其实它存储的就是对象信息。从JDK1.6开始JVM采用了一种新的技术叫做指针压缩,在C或者C++语言中对于指针的内容涉及到的比较多,而在Java语言中我们更多的是提到的是叫做引用的概念。这里首先来先科普一下引用和指正的区别。
引用和指针的区别与联系
现象
指针在使用的时候可以随意改变它的指向的变量,而引用一旦绑定之后就不再改变,总是指向最初的对象。
编译
程序在编译的时候分别将指针和引用添加到符号表上,符号表上记录的是变量名以及变量所对应的地址。指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表上对应的地址值为引用对象的地址值。符号表生成之后不会改变,因此指针可以改变指向的对象,而引用对象不能改变。
类型
引用其值为地址的数据元素,Java封装了的地址,可以转换成字符串进行查看,长度可以不用关心;C语言指针是一个装地址的变量,长度一般是计算机字长,可以认为是int
内存占用
引用声明时没有实体,不占空间。C指针如果声明后会用到才会进行赋值,如果不用则不会分配内存。
内存溢出
Java引用的使用权限比较小,不会产生内存溢出。C语言指针容易产生内存溢出。所以使用的时候格外小心。
本文探讨了亿级流量秒杀系统中JVM调优的重要性,介绍了JVM性能调优的关键,包括堆内存调优,特别是Java对象分配原理。详细解析了Java对象模型的OOP-Klass模型,以及对象创建过程的五个步骤,强调了JVM调优对于高性能系统的重要性。同时,阐述了JVM架构和堆内存分配的细节,如TLAB(ThreadLocalAllocBuffer)的使用,以提高对象分配效率。
订阅专栏 解锁全文
1402

被折叠的 条评论
为什么被折叠?



