首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >beanshell -死锁问题

beanshell -死锁问题
EN

Stack Overflow用户
提问于 2018-06-26 07:51:29
回答 1查看 89关注 0票数 0

有没有人有过beanshell死锁的经验?这是我们最近在我们的生产系统中遇到的情况,脚本执行阻塞了其他线程,因为它通过tomcat锁定了类加载。以下是锁拥有者在线程转储中的堆栈跟踪:

代码语言:javascript
运行
复制
"Thread-64" : 150 : BLOCKED : cpu=37812500000 : cpuLoad= 0.0
BlockedCount:93354 BlockedTime:-1 LockName:java.lang.Object@219d66b6 LockOwnerID:151 LockOwnerName:Thread-65
WaitedCount:13 WaitedTime:-1 InNative:false IsSuspended:false   at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.getArchiveEntries(AbstractSingleArchiveResourceSet.java:66)
    at org.apache.catalina.webresources.AbstractArchiveResourceSet.getResource(AbstractArchiveResourceSet.java:262)
    at org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:281)
    at org.apache.catalina.webresources.Cache.getResource(Cache.java:62)
    at org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:216)
    at org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:225)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2173)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:811)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1260)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
    at java.lang.Class.forName0(Class.java:-2)
    at java.lang.Class.forName(Class.java:348)
    at bsh.classpath.ClassManagerImpl.classForName(null:-1)
    at bsh.NameSpace.classForName(null:-1)
    at bsh.NameSpace.getImportedClassImpl(null:-1)
    at bsh.NameSpace.getClassImpl(null:-1)
    at bsh.NameSpace.getClass(null:-1)
    at bsh.Name.consumeNextObjectField(null:-1)
    at bsh.Name.toObject(null:-1)
    at bsh.BSHAmbiguousName.toObject(null:-1)
    at bsh.BSHAmbiguousName.toObject(null:-1)
    at bsh.BSHPrimaryExpression.eval(null:-1)
    at bsh.BSHPrimaryExpression.eval(null:-1)
    at bsh.BSHVariableDeclarator.eval(null:-1)
    at bsh.BSHTypedVariableDeclaration.eval(null:-1)
    at bsh.Interpreter.eval(null:-1)
    at bsh.Interpreter.eval(null:-1)
    at bsh.Interpreter.eval(null:-1)
    at my.package.MyClassFile(MyClassFile:2332)

我发现Groovy是更受欢迎的Java脚本编写选择,但我还没有看到很多文章说bsh会导致死锁。

如果能从这样的用户那里得到一些想法,那就太好了。

致以敬意,

EN

回答 1

Stack Overflow用户

发布于 2018-06-26 15:41:54

在Beanshell (几乎是最新的) 2.0b5版本中,GUI does not start in Java 8中的一个死锁得到了修复。

您可以在Beanshell项目中打开new issue

它可能连接到ClassManagerImpl

Bsh具有多层类加载架构。除非生成类、修改类路径或重新加载类,否则不会创建类加载器。

注意:我们可能需要在这里的中进行一些同步

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51033157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档