jvm调优策略
来源:互联网 发布:淘宝网店代理免费加盟 编辑:程序博客网 时间:2024/05/22 12:29
jvm常用调优工具有:Jconsole,jProfile,VisualVM
Jconsole : jdk自带,功能简单,但是可以在系统有一定负荷的情况下使用。对垃圾回收算法有很详细的跟踪。详细说明参考这里
JProfiler:商业软件,需要付费。功能强大。
VisualVM:JDK自带,功能强大,与JProfiler类似,推荐。
一般情况下调优都会首先看算法,多线程,集群。也就是常说的我们优化,首先要考虑的就是代码的优化,我原来遇到一个问题,一个经常提供服务的系统必须一天自动重启一次,还要手动GC,否则其他的系统就无法调用这个系统的服务,而且抛出的异常也是out of momery,是一个很常见的错误,我们这样开始分析。
代码
首先,我们用VisualVM进行查看发现,将推内存dump下来
发现底层实例化了很多hashmap
hashmap每次创建都会有缓存,当我们就将hashmap去掉后发现依然会抛出out of memory,只不过时间延长了,比原来没有去掉更晚抛出oom,治标不治根,我们用这个框架的同时,还有其他项目也用了这个框架,但是他们那个项目却没有出现这个问题,于是比较不同,发现我们的项目因为比较大,所以用的标签@ManytoOne比较多,当我们把这个标签用其他的方式替换后,发现不再抛出oom的错误,所以验证了第一点,代码的重要性,我们所有关于调优的出发点都是先看代码,因为代码是多人合作开发,每个人的习惯不同,可能会有各种各样的问题。
有了堆信息查看方面的功能,我们一般可以顺利解决以下问题:
–年老代年轻代大小划分是否合理
–内存泄漏
–垃圾回收算法设置是否合理
多线程
还是通过工具进行查看:
根据工具我们可以监控到以下的信息:
线程信息监控:系统线程数量。
线程状态监控:各个线程都处在什么样的状态下
总结
调优是一个比较大的概念,oom的情况有好多,比如是堆溢出?还是栈溢出?再比如stackoverflow,又是怎样发现的?这些情况的发生原因比较多变,我们可以通过工具来分析,但是又有个问题,如果现在是在生产环境上产生这个问题,因为这些工具非常耗资源,所以为了不影响生产环境,那又得用其他方式是检测,怎么做呢?
- jvm调优策略
- jvm调优之调优策略
- JVM调优的几种策略
- JVM调优的几种策略
- Flume的JVM调优策略
- JVM性能调优入门 调优策略
- JVM参数详细说明及调优策略
- JVM垃圾回收与性能调优总结 JVM调优的几种策略
- JVM调优案例分析与实战:高性能硬件上的程序部署策略
- jvm调优笔记(二)—— GC策略&内存申请、对象衰老
- 【java】jvm调优笔记(二)—— GC策略&内存申请、对象衰老
- jvm实战调优方案——高性能硬件上的部署策略
- JVM垃圾回收策略
- jvm详解-gc策略
- JVM优化策略
- JVM > 内存分配策略
- JVM 编译策略
- JVM的GC策略
- java常用命令
- method swizzling
- 盘点2016年iOS开发面试题及答案整理
- React Native开发AndroidApp(1)
- POJ3630 Phone List
- jvm调优策略
- Hash函数加密算法(一)
- C#之深复制学习案例
- Codeforces #337 (Div.2)C.Harmony Analysis【构造】
- Android Studio:Android Studio 配置
- Spring报错java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.getMethod(Ljava/lang/Class;
- ListView(信息显示列表) 与ArrayAdapter
- PHP中12个魔术方法
- setsid的作用