-
亲测解决dump导出JAVA堆内存文件报错:Unable to open socket file: target process not responding or ...
2020-12-29 10:49:33日前服务器一个应用总是莫名挂掉,通过排查发现是老年代内存无法回收引起,那么要定位到到底是那一部分数据导致的无法回收,就需要把堆内存dump出来,然后用工具分析。但奇怪的是dump的时候一直报错 Unable to open...背景
日前服务器一个应用总是莫名挂掉,通过排查发现是老年代内存无法回收引起,那么要定位到到底是那一部分数据导致的无法回收,就需要把堆内存dump出来,然后用工具分析。但奇怪的是dump的时候一直报错
Unable to open socket file: target process not responding or HotSpot VM not lo
解决方案
网上找了很多方案,都没效果,最终通过一些文章的启示,自己找到了解决方案。
问题引起的原因
由于Linux一切皆文件的特性,也就是说一个Java进程实际上会对应到一个PID文件,dump命令依赖于进程的PID文件,报错这个是由于这个PID文件可能已经被系统给删除了。
linux系统有个删除管理机制:系统每天会用tmpwatch命令检查并删除 /tmp 下超过240小时未访问过的文件和目录。
问题的解决方案
Linux有个文件(
/usr/lib/tmpfiles.d/tmp.conf
)中记录着一些目录,这些目录中不会被自动删除,我们需要在这个文件中配置我们的JAVA进程的PID目录。第一步:先找到PID所在目录
先用JPS命令得到进程号
32383为我的JAVA应用的进程号,然后我们去/tmp
目录下找这个进程号
很明显这里没有32383,但这里有个hsperfdata_root
目录不知道是什么东西,进去看看
这里有31383,那么也就是说/tmp/hsperfdata_root
目录即是要排除在外的目录。第二步:把找到的目录添加到文件内容中
vi /usr/lib/tmpfiles.d/tmp.conf
添加如下内容
/*
代表目录下的所有文件,添加之后应该是立即生效的,无需重启。如此,即可避免文件被系统删掉。其他事项
以上解决方案是我在我的系统中亲测成功的方案,由于系统版本不同,我的解决办法可能不适用于你,你需要尝试。
我的Linux内核版本为Linux version 3.10.0-1062.1.1.el7.x86_64
系统版本为CentOS Linux release 7.5.1804
我不确定其他系统版本的设置方式是否一致,有的系统可能没有/usr/lib/tmpfiles.d/tmp.conf
这个文件,那么可以看看是否存在/etc/cron.daily/tmpwatch
这个文件,存在的话可以在这个文件中添加排除项,添加方式与本文一致。如果依然无法解决,可以看看我参考的两篇文章,寻找解决方案。
参考
https://www.cnblogs.com/vsop/p/10943753.html
https://blog.51cto.com/zhangshaoxiong/1310166 -
vs 2010 跟MATLAB混合编程老报错
2015-03-16 10:06:06执行到MATLAB函数时软件会报错:Precision Design.exe 中的 0x758f812f 处有未经处理的异常: Microsoft C++ 异常: 内存位置 0x0e79f60c 处的 mwException。 并且在MATLAB函数处中断 我用的方法是dll文件混合编程的,... -
Xcode - 报错/技巧 - 在编译的时候,顺便检查内存泄露
2015-07-07 10:18:57而我认识这个技巧则是因为现在的项目是公司的老项目,代码是在MRC环境下书写的,这就表示我要花费一定的精力来关注内存管理相关的操作,比如导航控制器的内存管理(一直很迷惑),定时器的内存管理,还有等等的自动内存管理...我们在进行arc环境下的开发的时候,因为苹果会帮我们在编译期间,自动为我们的代码添加上内存管理的相关语句,但是这种情况下仍然是有可能出现内存泄露或者书写了多余的代码的情况. 而我认识这个技巧则是因为现在的项目是公司的老项目,代码是在MRC环境下书写的,这就表示我要花费一定的精力来关注内存管理相关的操作,比如导航控制器的内存管理(一直很迷惑),定时器的内存管理,还有等等的自动内存管理的相关知识. 而我们只要使用一个设置,就能够在每次代码编译的时候,静态检查代码的内存泄露的漏洞,为我们这些开发老项目的程序员省了不少心,当然对ARC的项目进行静态内存泄露分析也是很有必要的. 设置步骤: 1.点击项目文件,选择build settings 2.在搜索框中检索关键词:analyze 3.如下图所示,选择yes,就可以了
接着在编译的时候,就能发现ARC的代码也是存在着某些隐患的.
-
delete[] 报错问题
2010-05-22 11:03:00程序中开始new了一块内存,最后销毁时使用Delete[]老报错, pointNum = GetPointNum(file); pPointList = new POINT3F[pointNum-1]; memset(pPointList, 0, sizeof(POINT3F)*(pointNum-1));后来发现红色部分大小与...程序中开始new了一块内存,最后销毁时使用Delete[]老报错,
pointNum = GetPointNum(file);
pPointList = new POINT3F[pointNum-1];
memset(pPointList, 0, sizeof(POINT3F)*(pointNum-1));
后来发现红色部分大小与程序所需内存大小明显不符,后来将其改为:
pointNum = GetPointNum(file);
pPointList = new POINT3F[pointNum+1];
memset(pPointList, 0, sizeof(POINT3F)*(pointNum+1));
再Delete[]就没有问题了。也就是说在当内存大小不足时,程序中的操作越界操作数据后,原始指针所指内存大小被破坏了,也就不能正确的释放了。
-
kettle 内存设置_Kettle大数据量转换报错ora-04030: 在尝试分配484字节时进程内存不足...
2020-12-20 21:14:14最近在帮香港地铁在做一个数据转换,老的系统的表数据量都在几千万级别的,转换到700万左右就会出现以下错误:2011/06/23 06:14:20 - PM_MEASUREMENT_READING.0 - linenr 75500002011/06/23 06:14:20 - Update.0 - ...最近在帮香港地铁在做一个数据转换,老的系统的表数据量都在几千万级别的,转换到700万左右就会出现以下错误:
2011/06/23 06:14:20 - PM_MEASUREMENT_READING.0 - linenr 7550000
2011/06/23 06:14:20 - Update.0 - linenr 7550000
2011/06/23 06:14:27 - BU_ID.0 - LineNr : 15150000
2011/06/23 06:14:37 - EQUIP_ID.0 - linenr 7600000
2011/06/23 06:15:06 - CONV_EAM_METER_READING.0 - linenr 7650000
2011/06/23 06:15:06 - MEASUREMENT_ID.0 - linenr 7600000
2011/06/23 06:15:46 - Add sequence.0 - linenr 7650000
2011/06/23 06:15:46 - BU_ID.0 - LineNr : 15200000
2011/06/23 06:15:46 - Switch 1.0 - linenr 7600000
2011/06/23 06:15:46 - Judge.0 - linenr 7600000
2011/06/23 06:15:46 - Switch 2.0 - linenr 7600000
2011/06/23 06:16:35 - Convert LAST_UPD_USER_ID.0 - linenr 7650000
2011/06/23 06:16:35 - Filter rows.0 - linenr 7600000
2011/06/23 06:17:34 - STATUS.0 - linenr 7650000
2011/06/23 06:17:35 - PM_MEASUREMENT_READING.0 - linenr 7600000
2011/06/23 06:17:35 - Update.0 - linenr 7600000
2011/06/23 06:17:41 - BU_ID.0 - LineNr : 15250000
2011/06/23 06:17:51 - EQUIP_ID.0 - linenr 7650000
2011/06/23 06:18:21 - CONV_EAM_METER_READING.0 - linenr 7700000
2011/06/23 06:18:21 - MEASUREMENT_ID.0 - linenr 7650000
2011/06/23 06:18:59 - Add sequence.0 - linenr 7700000
2011/06/23 06:18:59 - BU_ID.0 - LineNr : 15300000
2011/06/23 06:18:59 - Switch 2.0 - linenr 7650000
2011/06/23 06:18:59 - Switch 1.0 - linenr 7650000
2011/06/23 06:18:59 - Judge.0 - linenr 7650000
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Because of an error, this step can't continue:
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : org.pentaho.di.core.exception.KettleDatabaseException:
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Unable to roll back database transaction to savepoint
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : ORA-04030: 在尝试分配 484 字节 (session heap,kxsc: kkspsc0) 时进程内存不足
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : org.pentaho.di.core.database.Database.rollback(Database.java:4766)
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : org.pentaho.di.trans.steps.tableoutput.TableOutput.writeToTable(TableOutput.java:405)
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : org.pentaho.di.trans.steps.tableoutput.TableOutput.processRow(TableOutput.java:117)
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : org.pentaho.di.trans.step.RunThread.run(RunThread.java:40)
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : java.lang.Thread.run(Thread.java:619)
2011/06/23 06:19:32 - Get Variables 1.0 - Finished processing (I=0, O=0, R=1, W=1, U=0, E=0)
2011/06/23 06:19:32 - Judge.0 - Finished processing (I=0, O=0, R=7656961, W=15313922, U=0, E=0)
2011/06/23 06:19:32 - CONV_METER - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Errors detected!
2011/06/23 06:19:32 - Switch 2.0 - Finished processing (I=0, O=0, R=7656961, W=0, U=0, E=0)
2011/06/23 06:19:32 - CONV_METER - ERROR (version 4.1.0-stable, build 14410 from 2010-11-16 16.43.28 by buildguy) : Errors detected!
2011/06/23 06:19:32 - Dummy (do nothing).0 - Finished processing (I=0, O=0, R=1, W=1, U=0, E=0)
2011/06/23 06:19:32 - Switch 1.0 - Finished processing (I=0, O=0, R=7656961, W=1, U=0, E=0)
2011/06/23 06:19:32 - Get Variables.0 - Finished processing (I=0, O=0, R=3, W=3, U=0, E=0)
2011/06/23 06:19:32 - Get Variables 3.0 - Finished processing (I=0, O=0, R=7636958, W=7636958, U=0, E=0)
2011/06/23 06:19:32 - Update.0 - Finished processing (I=7636958, O=0, R=7636958, W=7636958, U=7636958, E=0)
2011/06/23 06:19:32 - Filter rows.0 - Finished processing (I=0, O=0, R=7646961, W=7646961, U=0, E=0)
2011/06/23 06:19:32 - BU_ID.0 - Finished processing (I=0, O=0, R=7656962, W=15313924, U=0, E=0)
2011/06/23 06:19:32 - CONV_EAM_METER_READING.0 - Finished reading query, closing connection.
2011/06/23 06:19:32 - Add sequence.0 - Finished processing (I=0, O=0, R=7706967, W=7706967, U=0, E=0)
2011/06/23 06:19:32 - MEASUREMENT_ID.0 - Finished processing (I=15333925, O=0, R=7666963, W=7666963, U=0, E=0)
2011/06/23 06:19:32 - PM_MEASUREMENT_READING.0 - Finished processing (I=0, O=7636958, R=7636959, W=7636958, U=0, E=4)
2011/06/23 06:19:32 - EQUIP_ID.0 - Finished processing (I=15353928, O=0, R=7676964, W=7676964, U=0, E=0)
2011/06/23 06:19:32 - STATUS.0 - Finished processing (I=15373930, O=0, R=7686965, W=7686965, U=0, E=0)
2011/06/23 06:19:32 - Convert LAST_UPD_USER_ID.0 - Finished processing (I=15393932, O=0, R=7696966, W=7696966, U=0, E=0)
2011/06/23 06:19:32 - CONV_METER - CONV_METER
2011/06/23 06:19:32 - CONV_EAM_METER_READING.0 - Finished processing (I=7716969, O=0, R=0, W=7716968, U=0, E=0)
2011/06/23 06:19:32 - CONV_METER - CONV_METER
2011/06/23 06:19:32 - FAIL_RECORDS 1.0 - Finished processing (I=0, O=1, R=1, W=0, U=0, E=0)
2011/06/23 06:19:32 - FAIL_RECORDS.0 - Finished processing (I=0, O=3, R=3, W=0, U=0, E=0)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我发现每次报这个错误的时候oracle服务器上面的oracle.exe进程到了1.7g左右,奇怪的是每次都在这个地方就死了,上网查了以下,说是windows环境下oracle有1.7g的内存限制,可以突破限制,但是就算突破了限制,调到2g又有什么用,最多转到1000万有会报这个错误了,转换过程中,oracle进程所占用的内存在不断的增加,我的转换设置的是1000条commit一次的,有没有办法一边转换一边释放掉已经commit了的内存,不然的话要转几千万的数据那oracle进程占用起码要5g左右,kettle里面有没有什么设置可以释放内存的? 我发现只有转换停止了之后oracle进程才会释放,各位大哥请问有没有什么办法在转换大数据量时不会报以上的错误呢? 我试过很多oracle的调优,把最大连接数设大、sga和pga都设大了都没效果,反而设大了之后转到400万左右就挂了,各位大哥知道的话请联系我:
qq:263812212
邮箱:263812212@qq.com
2011年6月22日 23:30
-
记录一个Dubbo报错线程池溢出
2020-06-19 15:49:36Xmx xms 为老年代存活对象 Xmn 为年轻代 PermSize设置非堆内存初始值 MaxPermSize设置最大非堆内存的大小 调整JVM后依旧报错,后排查定时任务发现mysql定时任务备份导致。停掉定时任务后正常。 ... -
老电脑也要玩tensorflow,解决AVX、SEE、SEE2等报错之路
2019-04-01 22:59:17我原来的配置是i5,2g内存,gt540m,用显卡跑是没希望了,后来升级为i7 2760qm和6g内存。 刚开始跑的时候说我的电脑可以用AVX,于是有了这篇文章。 本文适合显卡不高、windows系统的电脑 参考:... -
Ecplise 运行项目报错
2020-06-03 01:26:11``` 2020-06-03 00:59:11,237 INFO (org.activiti.management.jmx.DefaultManagementAgent:225) - JMX Connector thread started and ...有哪位大老知道这个问题怎么处理吗?是什么原因造成了内存泄漏?? 谢谢。 -
c#报错不实现接口成员_C#如何安全、高效地玩转任何种类的内存之Span的秉性特点(二)...
2020-12-30 16:28:16前言读完上篇《C#如何安全、高效地玩转任何种类的内存之Span的本质(一)》,相信大家对span的本质应该非常清楚了。含着金钥匙出生的它,从小就被寄予厚望要成为.NET下编写高性能应用程序的重要积木,而且很多老前辈... -
在map转byte流上遇到报错,求救
2015-05-28 07:57:24我在将map转成文件流的时候遇到报错 ByteArrayOutputStream mem_out = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(mem_out);...本人初学者,求老码们帮帮忙 -
OpenCV报错之 Microsoft C++ 异常: cv::Exception
2019-02-26 11:01:26OpenCV报错之 Microsoft C++ 异常: cv::Exception ** 最近开始学习opencv,之前配置的2.4.9版本觉得太老,错误又多,所以重新配置了一个新的版本VS2015+OpenCV3.2.0,使用的64位,可能会遇上不少问题,希望在此... -
开发中遇到Eclipse报错:java.lang.OutOfMemoryError: PermGen space。
2018-07-19 14:35:46开发中遇到Eclipse报错:java.lang.OutOfMemoryError: PermGen space。 PermGen space百度翻译为:永久区域内存不足。 1. 先来一张jvm结构图: 内存不足问题一般都是发生在'堆'上,GC作用区域也是在'堆'上... -
PR2019打开报错:由于找不到MSVCR110.dll,无法继续执行代码
2020-07-19 18:36:34好久没有剪视频了,今天想打开剪一下视频,发现居然报错了,不能慌,网上一查,是因为VS的插件被我前些时候删掉了(谁叫电脑内存满了呢?) 好,废话不多说,下面是我的解决办法 进微软官网,选择x64位安装 ... -
java运行程序报错segmentation fault_java程序运行原理解析
2020-12-03 20:07:59ava运行时数据区 线程共享:方法区 堆内存 (老年代、新生代(S0、S1)) 随gc而创建和销毁线程独占部分 虚拟机栈 本地方法栈 程序计数器 随线程生命周期而创建和销毁方法区: 运行时常量池 字符串常量 (non-heap)方法区... -
Tomcat-8.3.57 启动不成功 报错:Failed to initialize component [Connector[HTTP/1.1-443]]
2019-05-05 10:18:27今早发现服务器的Tomcat突然...出问题首先tomcat logs文件夹,查看当天的catalina.log才发现报错:内存溢出, cat catalina.2019-05-05.log 解决方法: 发现特么的服务器的内存不够的 df-h 发现只有10M可以用了... -
用vs2017重新编译vs2008编写的程序,运行时memcpy函数报错
2020-06-08 00:46:04用vs2017编译正常,运行后在memcpy函数处报内存访问冲突,见下图,求解决,谢谢 (后续) 第二天再运行,又可以了,然后又过了一段时间还是老问题又出现了。。。 ![图片说明]... -
命令查看jvm堆内存使用情况 年轻代 老年代
2020-07-21 18:27:33报错情况1: 报错情况2: 解决: 2、jstat 3、JVM 堆内存内部结构 一、Heap Dump是什么? Heap Dump 是Java进程在某个时间点上的内存快照。通常在写heap dump文件前会触发一次FullGC,所以heap dump文件中... -
JdbcDataSourceStat、MybatisSQL拼接引起老年代内存不断增加
2020-06-02 10:48:32本以为又是一些业务上的bug导致的报错,一看报错发现日志写着java.lang.OutOfMemoryError: Java heap space。 接着我远程到那台服务器上,但是卡的不行。于是我就用top命令查了一下cpu信息,占用都快要到99%了。再看... -
mysql严格模式 报错_MySQL表操作 - osc_ky6f5kf1的个人空间 - OSCHINA - 中文开源技术交流社区...
2021-01-28 00:23:57一、存储引擎不同的数据应该有不同的处理机制mysql存储引擎:Innodb:默认的存储引擎,查询速度较myisam慢,但是更安全myisam:mysql老版本用的存储引擎memory:内存引擎(数据全部存在内存中,重启数据就消失了)... -
内存溢出,Java heap space,jvm垃圾回收好像没有用,内存一直在加
2017-07-18 09:51:07这个老报错,图片量一多起来就内存溢出了,内存一直增加,在eclipse配置了垃圾回 收也不行,还是一直增,不知道怎么解决,大神们指导下了 ![图片说明]... -
请教pandas读取sql server时怎样提速、少占内存?
2018-12-09 20:17:361.想使用pd.read_sql参数chunksize进行读取,但是老报错,去掉该参数能读取,目前没找到解决方法。 请各位大佬帮忙解决,感激不尽。 -
Java内存溢出问题总结
2018-10-19 11:33:39堆中(新生代和老年代)无法继续分配对象了; 某些对象的引用长期被持有没有被释放,垃圾回收器无法回收; 使用了大量的 Finalizer 对象,这些对象并不在 GC 的回收周期内。 解决办法 将堆内存 dump 下来,使用 ... -
Redis内存淘汰策略
2019-11-21 17:25:12Redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据。 一、Redis六种淘汰策略 noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错。 allkeys-lru:在主键空间中,优先移除最近未使用的key... -
java8下的垃圾收集器(parallel scavenge),内存不足而引发的fullGC如何确定哪些对象进入老年代?
2019-04-16 14:12:49这样伊甸园剩余内存为40,放得下40的对象,也不用报错,为什么收集器没有这么做呢? 或者说收集器对于哪些对象提前进入老年代行为是怎么确定的呢? 大于eden/2的对象一定要 目前看起来是年龄比较大的进去了,可是最大的...
-
MySQL 管理利器 mysql-utilities
-
朱老师鸿蒙系列课程第1期-3.鸿蒙系统Harmonyos源码配置和管理
-
v2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-nxx381if\opencv\modules
-
华为1+X认证——网络系统建设与运维(初级)
-
项目管理工具与方法
-
ArcGIS三维资源收集帖-附件资源
-
CUBEMX+CANOPEN教程一:实现cubemx工程配置以及实现串口不定长度收发-附件资源
-
深究字符编码的奥秘,与乱码说再见
-
[6] OFDM链路的误码率和OFDM符号的功率谱密度-附件资源
-
MySQL 事务和锁
-
JAVA简介
-
ubuntu环境下安装树莓派镜像的安装以及初始设置-附件资源
-
Java多线程——JUC之CountDownLatch
-
WIN10 64位版本下如何解决 PL232串口驱动安装失败的情况-附件资源
-
基于Qt的LibVLC开发教程
-
MHA 高可用 MySQL 架构与 Altas 读写分离
-
Amoeba 实现 MySQL 高可用、负载均衡和读写分离
-
华为1+X——网络系统建设与运维(高级)
-
RK3399平台多媒体测试-RK3399 视频编解码及摄像头测试
-
虚拟化运维工具—云安对物理服务器的监控