Tag: deadlock

为什么java中的processBuilder会在5分钟后挂起?

我hava命令行处理超过5分钟。 当我使用ProcessBuilder调用命令行时,它可以在5分钟内完成作业。 如果流程耗时超过5分钟并且流程没有改进,直到我退出流程,流程就会挂起。 p = new ProcessBuilder(“myprogram”,”with”,”parameter”).start(); p.waitFor(); 如果您不理解上述问题,请告诉我?

解释jstack输出

我有一个java进程使用BatchInserter将大量.csv文件中的大量数据加载到Neo4j数据库中。 我用的是: OpenJDK 7 Ubuntu 12.04 Neo4j 2.0 M3 加载第一个164 GB(根据ls -lh )后,文件夹大小停止增加,但进程继续运行,没有释放内存,CPU仍然是100%(全部根据htop )。 加载过程是单线程的,只有JVM使用多个线程 – 我猜是ParallelGC 。 我不确定如何诊断这类问题,但被指示尝试jstack ,所以将其输出包含在下面。 任何人都知道出了什么问题,或者对如何进行诊断提出建议? Full thread dump OpenJDK 64-Bit Server VM (22.0-b10 mixed mode): “Attach Listener” daemon prio=10 tid=0x00007fc3a4001000 nid=0x5636 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE “Service Thread” daemon prio=10 tid=0x00007fcf58123000 nid=0x4545 runnable [0x0000000000000000] java.lang.Thread.State: RUNNABLE “C2 CompilerThread1” daemon prio=10 […]

同步死锁(String intern())

我用户sun jdk 1.5 ThreadPoolExecutor(24,24,60,TimeUnit.SECONDS,new LinkedBlockingQueue())。 soemtime我用jdb工具查找线程池中所有线程的状态是“在监视器中等待”,代码是: String key = getKey(dt.getPrefix(), id); synchronized (key.intern()) { —–> “synchronized(key.intern())”中有问题吗? 我使用jdb工具跟踪informatnio,24个线程的状态是“在监视器中等待”,这意味着24个线程在“key.intern()”处于死锁状态。 (java.lang.Thread)0x28 pool-3-thread-2在监视器中等待 (java.lang.Thread)0x27 pool-3-thread-3在监视器中等待 (java.lang.Thread)0x1b pool-3-thread-4在监视器中等待 (java.lang.Thread)0x1a pool-3-thread-5在监视器中等待 (java.lang.Thread)0x19 pool-3-thread-6在监视器中等待 (java.lang.Thread)0x18 pool-3-thread-7在监视器中等待 (java.lang.Thread)0x17 pool-3-thread-8在监视器中等待… 所以结果是:在multithreading环境中,Sting intern()方法可能是死锁,好吗?

如何跟踪和防止在单独进程中运行的c3po中出现的死锁?

我有一个非常简单的计算,它产生字母矩阵可能找到矩阵中的所有单词。 单词中的字母是相邻的单元格。 for (int i = 0; i < 500; i++) { System.out.println(i); Matrix matrix = new Matrix(4); matrix.scanWordsRandomly(9); matrix.printMatrix(); System.out.println(matrix.getSollSize()); matrix.write_to_db(); } 这是持久代码。 public void write_to_db() { Session session = null; try { session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); Matrixtr onematrixtr = new Matrixtr(); onematrixtr.setDimension(dimension); onematrixtr.setMatrixstr(this.toString()); onematrixtr.setSolsize(getSollSize()); session.save(onematrixtr); for (Map.Entry<Kelimetr, List> sollution : sollutions.entrySet()) { Kelimetr […]

从Java运行程序或转储中获取死锁检测

我有一个运行的java软件被卡住了。 我想在里面看到一个视图,但不知道该怎么做。 是否有一些工具可以给出一个PID,它会告诉我每个线程当前位于何处以及可能还有一些变量值? 我正在运行linux。 我或多或少知道导致问题的原因,但仍有一些可能的情况,因此确定它会很好。 我无法重现错误,因为它每隔几天才会出现,并且在调试时从未出现过,所以这是了解敌人的独特变化。 有任何想法吗?

在Tomcat上部署的DBCP中的死锁问题

我在Spring配置中使用DBCP数据源(使用默认配置)来管理我与数据库的连接,并且当客户端数量增加时,我遇到了死锁状态。 我发现在我使用的DBCP 1.2.1中存在死锁问题,应该在1.4中解决。 所以我升级到1.4,但问题仍然存在。 在线程转储中,有许multithreading被阻塞,顶部有以下堆栈跟踪: java.lang.Thread.State: WAITING on org.apache.commons.pool.impl.GenericObjectPool$Latch@b6b09e at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1104) at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:200) at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:350) at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:261) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:101) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:160) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:631) 欢迎任何建议!

如何在Spring中重启死锁/锁定超时的事务?

在使用Spring(特别是Spring推荐的方法:声明式事务)时,在死锁或锁定超时exception时实现事务重启的最佳实践是什么? 谢谢, 阿萨夫

ReentrantReadWriteLock,ReadLock和WriteLock之间有什么区别

我所知道的,writelock就像是同步的。 Readlock和writelock以某种方式相互影响。 ReadLock似乎不能单独工作。