多线程下TreeMap访问造成CPU过载
来源:互联网 发布:nba生涯得分数据 编辑:程序博客网 时间:2024/05/21 22:43
最近发现webapp项目在客户的server运行几个小时后,会出现整个Server运行很慢,CPU高达100%,刚开始一直认为是哪里内存泄露,但一看该应用占用的内存并没有一直增长,也保持在一个合理的状态。
在排查故障的过程中,发现代码中使用public static TreeMap<String, String> treemap = new TreeMap<String, String>();
来记录状态信息,并且发现multi thread put/get访问该对象,就联想到HashMap是非线程安全,是否TreeMap也是呢?上某度一查,结果还真是。
那如何修改呢?Oracle官网http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6423457建议使用ConcurrentHashMap来替换,线程安全,并且查询效率比TreeMap高。但由于项目中需要对该Map按自然顺序或自定义顺序遍历键,刚好需要用到TreeMap的特性–排序,因此只能在方法加syncronized 或者定义如下
public static Map<String,String> treemap = Collections.synchronizedMap(new TreeMap<String,String>());
修改后再在客户server上运行,该问题就解决了。
0 0
- 多线程下TreeMap访问造成CPU过载
- 如何避免突发的大流量访问造成服务器过载
- 多线程:如何防止线程中的循环造成CPU利用率100%
- Linux网卡中断使单个CPU过载
- Linux网卡中断使单个CPU过载
- 过载
- vs2010 调试模式下XMMatrix赋值造成越界访问
- linux 下 防火墙造成的tomcat无法远程访问
- JAVA下的多线程程序造成系统时钟变快
- JAVA下的多线程程序造成系统时钟变快
- JAVA下的多线程程序造成系统时钟变快
- 技术项目 - Linux网卡中断使单个CPU过载
- 一次大面积线上cpu使用率过载报警总结
- Sqoop导表在大并发下造成RegionServer的系统cpu过高
- python关于多线程正则爬取邮件地址造成大量回溯CPU爆满,界面卡顿的问题
- php过载后无法恢复的原因分析(eaccelerator造成)
- EclipsePlug-in多线程情况下访问控件
- Android多线程下安全访问数据库
- iOS申请发布证书-图文详解
- 启动模式
- 216. Combination Sum III
- Crackme 28
- Android Studio2.2 的新特性--约束布局
- 多线程下TreeMap访问造成CPU过载
- Recall/Precision(召回率/准确率)以及F1-measure
- 通过代理使用 Git
- CentOS+Nginx+Tomcat+Redis实现负载均衡Session共享
- 常用MySql语句
- Linux查看CPU和内存使用情况
- keystore文件导入eclipse不显示指纹的问题
- MYSQL 优化常用方法
- android源码探索----多用户下phone进程问题