`
bmqnc
  • 浏览: 125975 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

第一次profiling

    博客分类:
  • java
 
阅读更多
    原来以为是程序中某个地方内存对象一直占用而没有得到及时的释放,我用JProfiler tunning了半天,一直没找到具体的原因,后来查看操作人员的日志,,发生堆空间溢出的地方不同,在代码中有多处存在,但后来经过分析,这些地方的共同点是在new一个对象(包括对象数组)时,发生了堆内存溢出,这个问题对我来说不是难事,肯定是程序中产生了大量的对象导致,关键就是确定在什么地方导致了大量对象产生,可以寻找一个代码切入点(凭经验和对代码的熟悉程度),在发生异常的地方,设置断点,并且在在debug时可以回看back trace,看哪些对象中存在巨大的对象,凭此就可以快速的找到原因。
     经过断点分析,终于找到了原因,原来是原来的程序员在所有属性函数的地方都生成了新对象,而这个属性函数是被频繁调用的,但是,这种属性查询函数实际上没必要每次产生新对象,因为对象所完成的功能是一样的,因此,我将其改为单例,问题就解决了。
      现在看来,design by contract那本书里面讲的真是精辟,分清楚函数的功能很重要。

      有时候感觉profiling也是一件蛮有趣的事情,关键是能看到程序中许许多多不完善的地方,
并且这些地方时原来程序员所忽略的,而伴随着解决这些问题,会感觉特有挑战性。
分享到:
评论

相关推荐

    系统级编程实验 第十次实验报告 profiling

    在本篇实验报告中,我们将深入探讨“系统级编程”中的一个重要主题——“profiling”。Profiling是软件开发过程中的一个关键环节,它用于分析程序的性能,包括但不限于执行时间、内存使用、CPU利用率等。这项技术...

    解析Mysql Profiling的使用

    MySQL Profiling 是一个内置的性能分析工具,它允许数据库管理员和开发者深入了解SQL查询的执行细节,从而优化数据库性能。在MySQL中,Profiling主要用于监测和分析SQL语句的执行过程,提供每个步骤所消耗的时间,...

    20174490125曾靖 第一次作业_Python数据处理_

    标题 "20174490125曾靖 第一次作业_Python数据处理_" 暗示了这是一个关于Python编程语言的数据处理作业,可能是某个课程或项目的一部分,由学员曾靖完成。描述提到“数据处理全代码非常好用”,表明这个作业包含了...

    第一次阅读报告-王佃涛3

    1. **Cache-miss Profiling**:通过SpeedShop形成的直方图分析,可以找出导致二级Cache缺失的指令位置,从而优化代码,如增加数组填充、循环交换或融合。 2. **多级内存层次结构分析**:以解决三维偏微分方程的交替...

    node-debug-and-profiling:研究可用于调试Node.js的各种工具

    第一次尝试设置dtrace4linux dtrace4linux的目标是为Linux平台提供DTrace。 在此构建中,没有涉及Linux内核代码,但是生成的是可动态加载的内核模块。 # Example of installation of dtrace4linux in Ubuntu# dtrace...

    Python一行命令生成数据分析报告

    一般在python进行数据分析/统计分析时,第一步总是对数据进行一些描述性分析、相关性分析,但是总会是有一大堆代码,那么今天就介绍一个神器pandas_profiling,一行命令就能搞定大部分描述性分析! 安装 pip ...

    performance-profiling:关于配置应用程序的FPS和内存占用量的步骤的简单演示

    7. **持续监控**:优化不是一次性的工作,应定期进行性能分析,确保优化效果并及时发现新的性能问题。可以借助一些第三方库,如Lighthouse,它们提供了自动化性能检测和报告。 总之,理解并掌握性能分析技巧对于...

    17 即时编译(下)1

    可以看到,在地址为 2cee 的指令处进行过一次比较之后,该机器码便直接返回 0。 Compiled method: 0x2cee: cmp ebp, ebp 0x2cf0: je 0x2d04 0x2cf2: mov eax, 0x0 0x2cf7: ret 从上面的例子可以看到,C2 ...

    计算优化1

    Traceview 可以记录每个方法的输入和输出,以分析资源使用情况,并在默认情况下每隔1000毫秒检查一次应用程序的运行状态。开发者可以通过启动 Traceview 来监控应用程序,与应用交互后停止分析,随后 Traceview 将...

    pytest最新文档

    ##### 1.2 第一个测试运行 (Our first test run) - pytest 的核心优势之一就是能够快速上手。创建一个简单的 Python 文件,比如 `test_example.py`,然后在这个文件中编写一个简单的测试函数。 - 基本的测试函数通常...

    golang 性能优化

    - **第一次测试**: - `BenchmarkFmt`: 平均每次操作耗时1617纳秒。 - `BenchmarkPlus`: 平均每次操作耗时393纳秒。 - **第二次测试**: - `BenchmarkFmt`: 平均每次操作耗时1324纳秒。 - `BenchmarkPlus`: 平均...

    java服务程序性能测试总结

    【Java服务程序性能测试总结】 在软件开发过程中,性能测试是一项至关重要...同时,性能测试并非一次性的任务,而是一个持续改进的过程,通过迭代优化,可以逐步提高Java服务程序的性能和稳定性,满足更高的业务需求。

    数据库面试专题及答案.pdf

    - 第一范式(1NF):确保每个字段不可分割。 - 第二范式(2NF):消除部分函数依赖,确保非主属性完全依赖于主键。 - 第三范式(3NF):消除传递函数依赖,使数据表结构更简洁,减少冗余。 12. **TRIGGERS**: ...

    优化--c程序员之终极标靶.doc

    优化的第一步是确定程序的瓶颈。这通常通过使用profiling工具来完成,找出哪些部分的代码占用了大量资源。识别出瓶颈后,程序员应首先考虑重新设计这部分代码,尤其是频繁执行的循环。现代编译器虽然具备一定的优化...

    招商银行信用卡中心2019秋招IT笔试大数据方向(一).docx

    - 第1行:`lines=sc.textFile("data.txt")`定义了一个基于外部文件的基本RDD。此时,数据并没有立即加载到内存中或执行任何操作;`lines`仅仅是文件的一个指针。 - 第2行:`lineLengths=lines.map(lambda s: len...

    racy Tracy:令人上瘾的工具,可为出色的开发人员轻松调试PHP代码。 友好的设计,日志记录,事件探查器以及高级功能,例如调试AJAX调用或CLI支持。 你会喜欢的。-PHP开发

    Tracy-PHP调试器Tracy库是日常PHP程序员的有用帮助者。 它可以帮助您:快速检测和更正错误日志错误转储变量... ... 因此,Tracy \ Debugger更有价值。 它是诊断工具中的终极工具。 如果您是第一次见到Tracy,请相信我,

    数据库面试专题及答案..docx

    - 第一范式(1NF):每个字段不可分割。 - 第二范式(2NF):非主键属性完全依赖于主键。 - 第三范式(3NF):不存在非主属性对键的传递依赖。 12. **MySQL触发器**:每个表最多可以有6个触发器,分别对应INSERT...

    fgprof:fgprof是一个采样Go探查器,可让您同时分析CPU上和CPU下(例如IO)时间

    快速开始如果这是你听到fgprof第一次,你应该阅读有关启动及。 无需在fgprof和内置分析器之间进行选择。 这是将两者都添加到您的应用程序的方法: package mainimport (_ ...

Global site tag (gtag.js) - Google Analytics