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