一,jstack(linux下特有)
可以观察到jvm中当前所有线程的运行情况和线程当前状态
1. 抓取分析文件的用法是:/usr/java/jdk1.6.0_13/bin/jstack -l 11831(其中11831是当前的java进程,这个需要自己ps看)
2. 抓到的文件内容大概是下面这个样子:
2010-03-18 13:09:52
Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.3-b02 mixed mode):
"Attach Listener" daemon prio=10 tid=0x00002aab41d02c00 nid=0x748b waiting on condition [0x0000000000000000..0x0000000000000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
- None
"SocketAcceptorIoProcessor-0.4" prio=10 tid=0x00002aab3e586800 nid=0x6a71 runnable [0x000000004234b000..0x000000004234bd20]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
- locked <0x00002aaab6c85770> (a sun.nio.ch.Util$1)
- locked <0x00002aaab6c85788> (a java.util.Collections$UnmodifiableSet)
- locked <0x00002aaab6c856f8> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at org.apache.mina.transport.socket.nio.SocketIoProcessor$Worker.run(SocketIoProcessor.java:480)
at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
- <0x00002aaab6c84ed0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
3.可以看出的问题:
其实打出来的内容不是很好,但是如果同一个方法在输出内出现多次,或者是locked某些资源,就可以初步判定一下问题。
二。 jmap(linux下特有(推荐!))
1.观察运行中的jvm物理内存的占用情况。参数如下:
-heap:打印jvm heap的情况
-histo:打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。
-histo:live :同上,但是只答应存活对象的情况
-permstat:打印permanent generation heap情况
2.用法:
jmap -J-d64 -dump:live,format=b,file=heap_dump.bin 15605
通常会将jmap的信息重定向输出到文件,然后使用工具来分析:) 比如MemoryAnalyzer这个非常牛的工具,
MemoryAnalyzer视图:这个视图还是比较强大的,会分析出最有可能泄露的4-5个根源,可以看到系统全部对象的资源。
。。oql,对象查询,,说实话不太会用。。但是掌握了估计用处很大,jhat也是支持这种查找的。
DB连接池泄露分析(还是这种gui的搜索方式比较对胃口),直接找一下connection,看看个数是不是接近pool.size上限,然后进去分析每个连接资源
- 大小: 61.4 KB
- 大小: 48.3 KB
- 大小: 107.1 KB
分享到:
相关推荐
工具的运用也是数据库性能调优的重要辅助手段。例如,使用性能监控工具可以实时跟踪数据库的运行状态,包括CPU使用率、内存消耗、磁盘I/O等关键指标,从而发现问题并及时调整。另外,使用性能分析器可以深入分析SQL...
### 数据库性能调优——原理与技术(针对Oracle) #### 一、数据库性能调优概述 在当前数据密集型的应用环境中,数据库系统的性能直接影响着企业的业务效率和用户体验。《数据库性能调优——原理与技术2》这本书...
### 数据库性能调优——原理与技术 #### 一、基础知识与重要概念 **1.1 数据库性能调优概述** 数据库性能调优是确保数据库系统高效稳定运行的关键环节之一。它不仅涉及到对数据库本身的调整,还包括对底层硬件、...
【性能调优工具perf介绍】 性能调优是提升软件系统效率的关键步骤,特别是在资源有限的环境中,优化能够最大化硬件的潜力。"perf"是Linux内核自带的一款强大的性能诊断工具,自内核2.6.31引入Performance Counter...
1. **查询优化**:查询优化是性能调优的基础,涉及到SQL语句的编写、索引的使用以及查询计划的选择。优化查询语句可以避免全表扫描,利用索引加速查找,减少I/O操作。同时,理解数据库的查询优化器工作原理也很重要...
综上所述,《数据库性能调优——原理与技术1.pdf》不仅涵盖了Oracle数据库性能调优的基本原理和技术方法,还提供了丰富的实践案例。这些技术和策略的应用能够帮助企业和开发者有效地提高数据库系统的性能,从而更好...
Oracle 性能调优 -- 解决 CPU 高度消耗 (100%) Oracle 性能调优是数据库管理和维护中非常重要的一部分。当数据库出现性能问题时,需要快速定位和解决问题,否则将影响业务的正常运作。在这里,我们将讨论如何解决 ...
1. **概述**:介绍性能调优的标准和流程,为后续的学习奠定基础。 2. **Java编程性能调优**:包括基础数据类型的优化、集合框架的选择与优化、网络通信的优化等方面。 3. **多线程性能调优**:探讨线程安全问题、锁...
NULL 博文链接:https://sunqi.iteye.com/blog/807475
- **分析性能**:通过监控工具收集系统运行数据,识别性能瓶颈。 - **范式**:遵循数据库设计的最佳实践,如第三范式,减少冗余,提升查询效率。 - **锁定**:正确使用锁机制,避免死锁,同时保障数据一致性。 - **...
本专题"性能调优专题-jvm类加载机制-performance-jvmclassloader"深入探讨了如何通过理解并优化类加载过程来提升应用程序的性能。 1. **类加载器的层次结构** Java中的类加载器分为Bootstrap ClassLoader、...
在IT行业中,性能调优是提升软件效率的关键环节,尤其对于Java应用程序来说,优化性能能够带来更好的用户体验和更高的系统资源利用率。本指南聚焦于计算机系统中的Java应用程序性能调优,通过代码示例来阐述相关技术...
【性能调优--0:前言】 性能调优是一个针对软件系统进行的持续改进过程,旨在提高系统的效率、响应速度和资源利用率。在J2EE应用中,性能问题可能导致用户体验下降,甚至影响整个系统的稳定性和可扩展性。性能调优...
在本节"Go语言学习(五)高质量编程与性能调优实战"中,我们将深入探讨如何利用Go语言的特性编写高效、可靠且可维护的代码,并掌握关键的性能优化技巧。Go语言,作为一种现代化的系统级编程语言,以其并发模型、垃圾...
如何在Go语言编程中进行高性能优化和性能调优。文章首先介绍了代码优化的技巧,包括减少内存分配、避免逃逸分析、尽量减少反射和类型转换等策略。接着,深入讲解了Go语言并发编程的优化方法,如合理控制Goroutine...
1. T-SQL性能调优的基本原则: - 索引优化:合理创建和维护索引是提高查询性能的关键。通过创建覆盖索引、选择合适的列排序、避免索引碎片等技术来优化索引。 - 查询优化:包括选择合适的连接类型(如内连接、外...
在IT领域,性能调优是确保系统高效运行的关键步骤,特别是在大数据、云计算和企业级应用环境中。性能监控和分析工具在此过程中扮演了至关重要的角色,它们可以帮助我们识别系统瓶颈,优化资源分配,提升整体性能。...
4. **性能监控与分析**:使用JConsole、VisualVM、JProfiler等工具进行性能监控,理解CPU使用率、内存分配、GC频率等指标。 5. **线程管理**:线程池大小的设定,如何避免死锁和线程饥饿。 6. **编译优化**:JIT...
### VC性能调优工具 在软件开发过程中,性能优化是一项重要的任务,特别是在处理大型或复杂的项目时更是如此。为了帮助开发者提高程序效率、减少资源消耗,市场上存在多种性能调优工具,如Rational PurifyPlus中的...
6. **性能监控和分析工具**:JDK自带的JConsole、VisualVM和JFR等工具可以帮助开发者实时监控JVM状态,定位性能瓶颈,进行调优。同时,`jmap`、`jstat`和`jhat`等命令行工具也是分析内存和性能的重要手段。 7. **...