背景:开发中时长会出现无法连接数据库的错误,怀疑应该是不是打开的连接数过多而导致。本例中通过jmap打印虚拟机堆栈信息中的连接数来确定进程所占用的数据库(oracle)连接数。
1.查看当前数据库的连接数
select count(*) from v$session;
2.启动30个线程同时查询数据库(连接池中最大允许50个连接),但所有线程再并未关闭连接
for (int i=0;i<30;i++){
Runnable r = new Runnable(){
@Override
public void run() {
Connection con = null;
Statement stm = null;
try {
con = DataBasePool.getConnection();
stm = con.createStatement();
stm.execute("select * from tt_bar_track t");
Thread.currentThread().sleep(10000);
} catch (Exception e) {
throw new RuntimeException("exec error", e);
} finally {
//DataBasePool.close(con, stm);
}
}
};
Thread t = new Thread(r);
t.start();
}
3.查看此时的数据库连接数增加了30个
select count(*) from v$session;
4.使用jmap (jmap -histo:live pid )查看此时的java所有对象数量,找T4CConnection的个数为30。
结论:使用jmap看T4CConnection的数量即为该java进程占用的数据库连接数
分享到:
相关推荐
ps 命令可以查看进程的虚拟内存大小(VSZ)和实际占用的物理内存大小(RSS)。从 ps 的输出结果可以看到,Java 进程的虚拟内存大小是 7.4GB,实际占用的物理内存大小是 2.9GB。这说明 Java 进程的虚拟内存大小远远...
### 使用jmap分析Java程序性能问题 在Java开发与维护过程中,经常遇到与内存相关的性能问题及故障。这些问题包括但不限于内存泄漏、频繁的垃圾回收、内存溢出等,它们不仅影响程序的稳定运行,还可能导致服务中断。...
JAVA 进程占用巨大内存的分析 在 64 位 LINUX 系统上,JAVA 进程的内存占用是一个非常重要的问题。根据给定的文件信息,我们可以看到,JAVA 进程在 64 位 LINUX 下占用了巨大内存,达到 11G,已分配地址空间更是 17...
jmap 排查 java 进程内存使用率高步骤glances 找出服务器中 CPU 占用率高的进程临时修改程序用户的 shell 为可登录用户并切换到该用户注意
1. **生成堆转储文件**:通过`jmap -dump:format=b,file=<filename> <pid>`命令,我们可以从运行中的Java进程生成一个heap dump文件,这个文件包含了Java堆内存的所有信息。 2. **查看堆概要**:`jmap -histo:live ...
这种情况下,无法获取 Java 进程的 pid,导致无法使用 jmap 和 jstack 命令。 解决方案: 1. 了解 Linux 特殊进程 在 Linux 系统中,有一些特殊的进程,例如 pid=1 的 init 进程、pid=2 的 kthreadd 进程等。这些...
例如,使用wmic process命令可以查看当前的数据库连接进程: ``` wmic process where caption="python.exe" get processid,caption,commandline /value ``` 使用netstat命令可以查看当前的网络连接情况: ``` ...
`jmap -histo [进程ID]` 可以按类型统计对象数量和占用的空间,有助于发现潜在的内存泄漏问题。此外,`jmap -dump:format=b,file=filename.dump [进程ID]` 可以生成堆转储文件,便于进一步的内存分析。 3. **jstack...
5. **数据库**:虽然Java面试主要关注编程技能,但对数据库的基本操作和设计也是必不可少的。MySQL、Oracle、SQL Server等关系型数据库的查询优化、事务管理、索引原理、数据库设计范式等是常考知识点。 6. **...
1. 查看进程:`ps` 命令可以查看当前运行的进程,例如,`ps -ef | grep tomcat` 查看所有有关 tomcat 的进程。 2. 终止进程:`kill` 命令可以终止进程,例如,`kill -9 19979` 终止线程号位 19979 的进程。 网络...
首先,`jmap`是Java HotSpot虚拟机的一个命令行工具,它允许开发者查看堆内存的详细信息,包括堆的大小、分配情况以及对象的详细统计。`jmap`的一些主要功能有: 1. **生成堆转储(Heap Dump)**: 使用`jmap -dump`...
- 使用命令 `jmap -heap <pid>` 来查看堆内存的使用情况。 - 通过对堆内存的监控,我们可以更好地理解内存使用情况,并据此调整JVM参数。 #### 二、Tomcat线程设置 在配置Tomcat的线程池时,也需要考虑服务器...
标题"java查看哪个进程切换频繁上下文"提示我们关注的是如何在Java环境中监控进程的上下文切换情况。这里有两个主要的命令工具可以帮助我们实现这一目标: 1. **pidstat**:这是一个Linux系统工具,能够提供关于...
开发者可以通过jconsole连接到本地或远程的Java进程,直观地看到各种性能指标,并进行诊断。此外,jconsole还支持设置告警阈值,当内存使用超过预设值时会触发告警,提醒开发者关注可能存在的内存泄漏。 `jinfo`...
jstack 主要用来查看某个 Java 进程内的线程堆栈信息。语法格式如下:jstack [option] pid 或 jstack [option] executable core 或 jstack [option] [server-id@]remote-hostname-or-ip。指令行参数选项解释如下: ...
《深入解析Java jmap工具与内存分析》 在Java开发中,内存管理和性能优化是至关重要的环节。"jmap"工具作为Java虚拟机(JVM)的一部分,为开发者提供了强大的内存分析功能,尤其是在处理内存溢出和理解Java运行时...
在Java中,内存泄露的原因非常多样,例如,静态变量、循环引用、数据库连接池、Session溢出等等。为了检测和解决Java内存泄露问题,Java提供了多种工具和命令来帮助开发者快速地定位和解决问题。本文将介绍Java内存...
* 查看 Java 进程的 heap 内存使用情况:jmap -heap * 生成 Java 进程的内存快照:jmap -dump:format=b,file=<filename>.hprof * 查看 Java 进程的栈信息:jstack -l 五、其它命令 最后,以下是一些其它常用的...
例如,`jstack pid`命令用于查看进程id为pid的Java线程的堆栈信息。 4. jmap命令用于观察运行中的JVM物理内存的占用情况。它能打印出每个class的实例数目、内存占用和类全名信息。此外,jmap命令还可以将Java进程的...