Java 性能优化的 50 个细节(珍藏版)
程序员的成长之路
共 11707字,需浏览 24分钟
· 2021-09-27
阅读本文大概需要 13 分钟。
作者:老夏 | 来源:21CTO
在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。
控制资源的使用,通过线程同步来控制资源的并发访问;
控制实例的产生,以达到节约资源的目的;
控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。
public class A{
private static B b = new B();
}
class MAF {
public void setSize (int size) {
_size = size;
}
private int _size;
}
更正
class DAF_fixed {
final public void setSize (int size) {
_size = size;
}
private int _size;
}
String str = "hello";
String str = new String("hello");
for(int i=0;i<list.size();i++)
for(int i=0,len=list.size();i<len;i++)
A a = new A();
if(i==1){
list.add(a);
}
if(i==1){
A a = new A();
list.add(a);
}
int num = a / 4;
int num = a / 8;
int num = a >> 2;
int num = a >> 3;
int num = a * 4;
int num = a * 8;
int num = a << 2;
int num = a << 3;
StringBuffer buffer = new StringBuffer(1000);
Public void test(){
Object obj = new Object();
……
Obj = null;
}
Public void test(){
Object obj = new Object();
……
Obj = null;
//执行耗时,耗内存操作;或调用耗时,耗内存的方法
……
}
public static Credit getNewCredit() {
return new Credit();
}
private static Credit BaseCredit = new Credit();
public static Credit getNewCredit() {
return (Credit)BaseCredit.clone();
}
Map<String, String[]> paraMap = new HashMap<String, String[]>();
for(Entry<String, String[]> entry : paraMap.entrySet()) {
String appFieldDefId = entry.getKey();
String[] values = entry.getValue();
}
import java.util.Vector;
class CEL {
void method (Vector vector) {
for (int i = 0; i < vector.size (); i++) // Violation
// ...
}
}
class CEL_fixed {
void method (Vector vector) {
int size = vector.size ();
for (int i = 0; i < size; i++)
// ...
}
}
import java.util.Vector;
public class DIC {
public void addObjects (Object[] o) {
// if length > 10, Vector needs to expand
for (int i = 0; i< o.length;i++) {
v.add(o); // capacity before it can add more elements.
}
}
public Vector v = new Vector(); // no initialCapacity.
}
public Vector v = new Vector(20);
public Hashtable hash = new Hashtable(10);
public class IRB {
void method () {
int[] array1 = new int [100];
for (int i = 0; i < array1.length; i++) {
array1 [i] = i;
}
int[] array2 = new int [100];
for (int i = 0; i < array2.length; i++) {
array2 [i] = array1 [i]; // Violation
}
}
}
public class IRB {
void method () {
int[] array1 = new int [100];
for (int i = 0; i < array1.length; i++) {
array1 [i] = i;
}
int[] array2 = new int [100];
System.arraycopy(array1, 0, array2, 0, 100);
}
}
class MAF {
public void setSize (int size) {
_size = size;
}
private int _size;
}
class DAF_fixed {
final public void setSize (int size) {
_size = size;
}
private int _size;
}
public class USC {
String method () {
StringBuffer s = new StringBuffer ("Hello");
String t = s + "World!";
return t;
}
}
public class STR {
public void method(String s) {
String string = s + "d" // violation.
string = "abc" + "d" // violation.
}
}
public class STR {
public void method(String s) {
String string = s + 'd'
string = "abc" + 'd'
}
}
推荐阅读:
Win11 神优化!CPU、内存占用暴降,速度傻快让人秒弃 Win10
最近面试BAT,整理一份面试资料《Java面试BATJ通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
朕已阅
评论
盘点Lombok的几个骚操作,你绝对没用过!
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
0
堪称最优秀的Docker可视化管理工具——Portainer你真的会用吗?
来源:blog.csdn.net/shark_chili3007/article/details/123366179👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目
小哈学Java
0
【深度学习】人人都能看懂的LSTM
熟悉深度学习的朋友知道,LSTM是一种RNN模型,可以方便地处理时间序列数据,在NLP等领域有广泛应用。在看了台大李宏毅教授的深度学习视频后,特别是介绍的第一部分RNN以及LSTM,整个人醍醐灌顶。本文就是对视频的记录加上了一些个人的思考。0. 从RNN说起循环神经网络(Recurrent Neur
机器学习初学者
0
如何计算数据中心的冷却需求?
今日分享 【导读】数据中心的冷却要求受多种因素影响,包括设备的热量输出、占地面积、设施设计和电气系统功率额定值等等……众所周知,环境因素会严重影响数据中心设备。过多的热量积聚会损坏服务器,可能导致其自动关闭。经常在高于可接受的温度下运行服务器会缩短其使用
数据中心运维管理
0
多人同时导出 Excel 干崩服务器!新来的阿里大佬给出的解决方案太优雅了!
点击关注公众号,Java 干货及时推送↓推荐阅读:面试辅导,我们出大成果了!来源:juejin.cn/post/7259249904777838629前言 业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,
Java技术栈
1
知乎热议:博士生最好的状态是什么?
链接:https://www.zhihu.com/question/447412618编辑:深度学习与计算机视觉声明:仅做学术分享,侵删作者:JackieLeehttps://www.zhihu.com/question/447412618/answer/2963078772最好状态比较难说,最开心
机器学习初学者
0
什么样的冷却方法适合数据中心运营?
冷却数据中心的最简单方法是安装空气交换器,通过服务器室生成冷空气。但是,如果想要节省资金,至少从长远来看,更好的方法可能是在每个机架上安装空气交换器,并使用它们为单个机架的服务器降温。"后机架冷却",与数据中心中更为传统的空气冷却系统相比,特别是在能源效率方面,其具有一些优势。冷却数据中心的最简单
数据中心运维管理
0
大厂都在用的 Git 代码管理规范 !
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
2