调优案例分析

堆外内存导致的溢出

除了java堆和永生代之外,西面这些区域还会占用较多的内存,这里所有内存总和受到操作系统进程最大内存的限制。

  • Direct Memory
  • 线程堆栈
  • Socket缓存区:每个socket连接都receive和send两个缓存区,分别占大约37k和25k内存,连接多的话这块内存也很客观,如果无法分配则绘抛出IOException:Too many open files异常。
  • JNI代码:如果代码中使用JNI调用本地库,那本地库使用的内存也不在堆中。
  • 虚拟机和GC:虚拟机、GC的代码执行也要消耗一定的内存,

外部命令导致系统缓慢

fork系统调用是linux用来产生新进程的,在java虚拟机中,用户编写的java代码最多只能有线程得概念,不应有进程的产生,bug产生:执行一个外部shell脚本通过java的Runtime.getRuntime().exec()方法来调用的,这种调用方式在虚拟机是非常消耗资源的操作,即是外部命令本身能很快完成,频繁调用时创建进程的开销也很可观。java执行这个命令的过程是,首先克隆一个和当前虚拟机拥有一样环境变量的进程,再用这个新的进程去执行外部命令,最后退出这个进程,频繁执行这个操作,cpu消耗会很大,内存负担也重。

写代码,写plugin.xml代码,代码打成jar,放到eclipse的plugin目录,ok。

时间: 2024-07-30 09:35:08

调优案例分析的相关文章

《深入理解Java虚拟机》调优案例分析与实战

上节学习回顾 在上一节当中,主要学习了Sun JDK的一些命令行和可视化性能监控工具的具体使用,但性能分析的重点还是在解决问题的思路上面,没有好的思路,再好的工具也无补于事. 本节学习重点 在书本上本节的主要内容是讲作者在工作过程中对调优的一些经验实战.对于我们读者来说,重点是学习作者分析解决问题的具体思路.当然不能离开书本的内容,作者利用的是上一节所介绍到的工具去解决他所遇到的问题.但本人的工作环境跟书本上的教程不一致,但思路大同小异.所以在本章的学习笔记当中,还是结合自身的情况,聊聊调优这事

深入理解_JVM内存管理调优案例分析与实战10

1.高性能硬件上的程序部署策略 目前常用2种方式: (1)通过64位JDK来使用大内存: 使用第一种方式关键: <1>控制应用程序的Full GC频率.譬如10多个小时甚至一天才出现一次Full GC. 关键:大多数对象的生存时间不应该太长,保证老年代空间的稳定. 在大多数网站形势的应用里,主要对象的生存周期都是请求级或页面级的,会话级和全局级的长生命对象相对较少,控制住Full GC. 需要考虑的问题: <1>内存回收导致的长时间停顿: <2>现阶段,64位JDK的性

第五章 调优案例分析与实战

案例1: 15万PV/天左右的在线文档类型网站最近更换了硬件系统,新的硬件为4个CPU.16GB物理内存,操作系统为64位CentOS 5.4 , Resin作为Web服务器.整个服务器暂时 没有部署别的应用,所有硬件资源都可以提供给这访问量并不算太大的网站使用.管理员为 了尽量利用硬件资源选用了64位的JDK 1 . 5 ,并通过-Xmx和-Xms参数将 Java堆固定在12GB.使用一段时间后发现使用效果并不理想,网站经常不定期出现长时间失去响应的情况. 监控服务器运行状况后发现网站失去响应

[大数据性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析

本課主題 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质是什么,以及 Spark 在性能调优部份的要点,这两点让直式进入性能调优都是一个至关重要的问题,它的本质限制了我们调优到底要达到一个什么样的目标或者说我们是从什么本源上进行调优.希望这篇文章能为读者带出以下的启发: 了解大数据性能调优的本质 了解 Spark 性能调优要点分析 了解 Spark 在资

hbase性能调优案例

hbase性能调优案例 1.人员-角色 人员有多个角色  角色优先级 角色有多个人员 人员 删除添加角色 角色 可以添加删除人员 人员 角色 删除添加 设计思路 person表 rowkey cf1 - 人员基本信息  cf2 - 角色列表 pid cf1:pname=;cf1:age;..  cf2:rid=n数字.优先级;... person表--举例说明 001  cf1:pname=小周;cf1:age=1;    cf2:102=0; 002  cf1:pname=小明;cf2:age

性能调优案例分享:Mysql的cpu过高

性能调优案例分享:Mysql的cpu过高 问题:一个系统,Mysql数据库,数据量变大之后.mysql的cpu占用率很高,一个测试端访问服务器时mysql的cpu占用率为15% ,6个测试端连服务器的时候mysql cpu占用率为50%~60% .ps 1: 每个测试端所做事情就是插入记录,不过插入前会先查询一下是否已经有相同的记录,有的话就更新原有记录,没有就直接插入. ps 2: CPU--Pentium Dual E1240 @ 1.60GHZ内存--2GOS--Windows 2003调

老李分享:大数据性能调优案例

老李分享:大数据性能调优案例 1.“空间换时间”以及“内存中处理数据” 比如user_id.csv文件中有20万个不同的user_id,根据user_id去查其对应的用户最近发表的一篇帖子,取出post_id,post_title.post_time和user_id(post表中查,post表中有一列是user_id,表示帖子所属者),而帖子数目有大概两百万,那么如何处理呢?我的解决方案是:A. 先将post表post_id,post_title.post_time和user_id这四列导出到p

对自定义函数使用不当的调优案例

一.问题. 下面这条SQL的运行时间较长,不满足业务需求. select rs.managecom, (select codename from ldcode where codetype = 'station' and code = rs.managecom), rs.insurername, rs.contplancode, case when sum(prem) - sum(prem2) + sum(prem3) = 0 then '' else case when substr(roun

基于生产环境的JVM调优-结果分析

硬件:一台centos linux 64位8G,2核的server. 四个生产tomcat. 废话不多说,喷子勿扰,上截图. jvm及tomcat调优配置截图: 结果查看: 先用top获得java虚拟机的进程pid,然后使用jstat -gc pid 5000命令查看每个虚拟机内存使用情况如图: 上面是优化的生产环境,下面我们看看未做任何优化的测试环境,如图: 总结: 不难看出,优化后的生产环境在运行半个月后未进行过任何一次fullGc,而且老年代剩余空间还非常大,更而且生产环境有4台tomca