文档章节

JVM 调优手段

业余编程人士
 业余编程人士
发布于 2017/06/18 13:56
字数 550
阅读 122
收藏 0

uptime // 查看系统负载情况,运行时间:7分钟, 3个连接数,1,5,15分钟的系统负载(运行的平均进程数:0.8,0.93,0.50)

top // 查看系统IO, CPU 进程,内存 等所有信息

vmstat  | 4 // 统计CPU 内存 IO 等情况 和 上面类似, cs us 说明线程切换多

pidstat // 用于细致观察每一个进程,需要额外安装

-t // 显示线程

perfmon // 在windows上 查看各种线程情况,系统自带的

Process Explorer // 一个比上面更加强大的东西

jps  // 显示所有java相关进程 - m -q -l -v 

jmap // 生成java程序堆快照对象统计信息 jmap -histo 2972 >cL/a.txt

    jmap -dump:format=b, file=c:\heap.hprod 2972 // 导出堆信息

jstack // 打印线程信息 -l 打印锁 -m  打印针信息-F 强制 jstack 120 >> C:\a.txt

JConsole //图形化监控 ,最要给线程起一个好听的名字 便于拍错

Visual VM // 更加漂亮

 JVM 内存: 堆 + 永久区 +线程站+直接内存。 

堆溢出:增加Xms 对空间大小 or 增加是放内存频率

永久区溢出:类的数量太多,例如cglib产生大量类 类的metainfor存在permGen 所以造成溢出,增大永久区大小 or 设置允许回收class元数据。

Java 栈溢出:堆空间 + 栈空间(线程空间) < 总空间。缩小堆空间,解决。

直接内存溢出:ByteBuffer.allocateDirect(1024*1024). 减少堆空间,估计触发GC。

MAT(Memory Analyzer) // 一中分析内存Dump的软件

Shallow Heap: 对象结构大小,比如String结构大小24个字节,永远不变。

Deep Heap: 对象的真实占用内存的大小。 

Jmeter // 压力测试的一个工具,MAT发现一个ConcurrentHashMap 占内存很大,存了太多Session,导致Tomcat OOM. Tomcat 默认20分钟过期。解决方法: 增加堆大小 缩小Session过期时间,

计算系统并发压力:JQL 取得Session列表类似SQL,select s.creationTime from session order by time;

(最后一个session - 第一个session) = session 创建的持续毫秒数

(最后一个session - 第一个session) /1000 = 换算成秒 

访问数 / (最后一个session - 第一个session) /1000   = 并发量

eg: 9941 / ((14646646464-143473747374)/ 1000) = 320次请求/秒

 

 

 

 

 

 

 

© 著作权归作者所有

上一篇: Java 的锁
下一篇: 链式-AOP
业余编程人士
粉丝 5
博文 19
码字总数 9137
作品 0
其他
程序员
私信 提问
《成神之路-基础篇》JVM——JVM参数及调优(已完结)

Java内存模型,Java内存管理,Java堆和栈,垃圾回收 本文是[《成神之路系列文章》][1]的第一篇,主要是关于JVM的一些介绍。 持续更新中 JVM参数及调优 JVM实用参数系列 成为Java GC专家(5)...

2018/05/05
0
0
三流程序员与一流程序员之间的区别,看看你是属于哪一类?

源码系列 手写spring mvc框架 基于Spring JDBC手写ORM框架 实现自己的MyBatis Spring AOP实战之源码分析 Spring IOC高级特性应用分析 ORM框架底层实现原理剖析 手写Spring MVC框架实现 手把手...

茶轴的青春
2018/04/17
34
0
Java开发者不会这些永远都只能是三流程序员,细数一下你是不是?

源码系列 手写spring mvc框架 基于Spring JDBC手写ORM框架 实现自己的MyBatis Spring AOP实战之源码分析 Spring IOC高级特性应用分析 ORM框架底层实现原理剖析 手写Spring MVC框架实现 手把手...

美的让人心动
2018/04/16
122
5
JVM性能优化, Part 5:Java的伸缩性

ImportNew注: JVM性能优化系列文章前4篇由ImportNew翻译(第一篇,第二篇,第三篇, 第四篇)。本文由新浪微博:吴杰 (@WildJay) 投稿至ImportNew。感谢吴杰! 如果你希望分享好的原创文章或...

梁杰_Jack
2014/10/30
224
0
JVM参数调优:Eclipse启动实践

JVM参数调优:Eclipse启动实践 本文主要参考自《深入理解 Java 虚拟机》。 这本书是国人写的难得的不是照搬代码注释的且不是废话连篇的技术书,内容涵盖了 Java 从源码到字节码到执行的整个过...

天天顺利
2015/01/13
280
0

没有更多内容

加载失败,请刷新页面

加载更多

CQRS与AXON

CQRS 看了蛮多文章,只会CRUD,却不懂CQRS,CQRS是遵循DDD思想而产生的一种模式,Command and Query Responsibility Segregation 命令与查询隔离。查询就直接通过正常的模式service调dao层。...

无极之岚
20分钟前
2
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
34分钟前
53
4
500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
8
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部