前言
一个很重要的知识环节。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于系统的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。
性能优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于运行的效率绝对是有提升的。
Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难。随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了。现代JVM持续演进,内建了更为成熟的优化技术、运行时技术和垃圾收集器。与此同时,底层的硬件平台和操作系统也在演化。本文会结合实际中接触到的一些面试题,重点了解一下Java架构性能优化中的一些相关知识。
JVM性能优化相关问题
Java 类加载过程?
描述一下 JVM 加载 Class 文件的原理机制?
Java 内存分配。
Java 堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space)?
GC 是什么? 为什么要有 GC?
简述 Java 垃圾回收机制。
如何判断一个对象是否存活?(或者 GC 对象的判定方法)
垃圾回收的优点和原理。并考虑 2 种回收机制。
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
Java 中会存在内存泄漏吗,请简单描述。
深拷贝和浅拷贝。
System.gc() 和 Runtime.gc() 会做什么事情?
finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?
如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
什么是分布式垃圾回收(DGC)?它是如何工作的?
串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
在 Java 中,对象什么时候可以被垃圾回收?
简述 Java 内存分配与回收策率以及 Minor GC 和 Major GC。
JVM 的永久代中会发生垃圾回收么?
Java 中垃圾收集的方法有哪些?
什么是类加载器,类加载器有哪些?
类加载器双亲委派模型机制?
java程序性能优化相关问题
如何创建优雅的对象
注意对象的通用方法
类的设计陷阱
泛型需要注意的问题
程序设计的通用规则
Tomcat性能优化相关问题及经验
你怎样给tomcat去调优?
tomcat中的文件主要写了些什么?
tomcat哪里设置访问线程数目?
怎样加大tomcat的内存?
Tomcat有几种部署方式?
谈谈你对tomcat优化经验
MySql性能调优相关问题
谈谈表结构对性能的影响
浅谈索引优化
JOIN的原理是什么
说说Sql优化的几点原则
谈谈MySQL 中锁
讲解对事务的认识
如何理解BTree机制?
如何深入执行计划分析?
谈谈对慢查询分析与SQL优化
性能优化应该如何学习
在开发好页面后,如何让页面更快更好的运行,是区分一个程序猿技术水平和视野的一个重要指标。所以面试时,面试官总会问你一个问题,如何进行性能优化呢?
如果你这时是头脑一片空白,或是像之前的我一样,靠死记硬背或是之前的经历,答一下压缩代码,打包代码,事件代理,这说明你对性能优化还是缺乏一个整体,系统的掌握,对性能优化还只是处于听说过一个方法就加上去的阶段。这样也就无从去更好的优化性能。在这分享一个性能优化的具体学习导图给大家!
结语
上述性能优化一些创建问题我总结出了一些解答和见解做成文档,还整理了性能优化学习的高清导图及一些免费的关于Kafka、Mysql、Nginx、Netty、Dubbo、Redis、Spring cloud、分布式、高并发、性能调优、微服务等架构技术资料和架构面试题资料在群里分享,有需要的朋友可以来领取!
资料领取方式:加QQ群930254941,进群领取资料!
点击链接加入群聊【java架构交流群】:https://jq.qq.com/?_wv=1027&k=5wOsvhZ
有疑问加站长微信联系(非本文作者)