草庐IT

java - 如何分析PermGen空间?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:HowtoanalyzePermGencontents?我想知道占用PermGen空间的是什么-stringintern()还是classes?是否有任何工具可以帮助进行此分析?

java - "Found 1 deadlock"但跟踪显示未被任何线程锁定

JVM告诉我发生了死锁:FoundoneJava-leveldeadlock:============================="TP-Processor107":waitingforownablesynchronizer0x00002aaaf58e70f0,(ajava.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync),whichisheldby"indexTrackerThread3""indexTrackerThread3":waitingforownablesynchronizer0x00002aaaf4

java - 增加java中单个工作线程的堆栈空间

在我的javaweb应用程序中,我有一个后台工作线程,它需要大量堆栈空间,因为它使用activiti工作流引擎和groovy脚本任务运行一个非常复杂的工作流。目前我需要在64位Java和Tomcat上将JVMXss设置设置为16MB,以规避任何StackOverflowErrors。如果发生错误,堆栈跟踪非常大(几百行长),但它都发生在引擎内部,所以我真的无能为力。现在我的问题是:有没有办法在运行时增加单个线程的堆栈大小?我想将应用程序中所有线程的JVM默认Xss设置降低到512k,我知道这足够了,并且只运行16M的工作线程。JavaAPI为Thread类的构造函数提供了有关此主题的一

java - 您可以覆盖由 -XX+HeapDumpOnOutOfMemoryError 生成的堆转储的文件权限吗?

在Linux上,当使用-XX+HeapDumpOnOutOfMemoryError时,生成的hprof文件归运行java进程的用户所有,权限为600。我知道这些权限是最安全的,但是否可以覆盖它们? 最佳答案 你可以用启动JVMjava-XX:+HeapDumpOnOutOfMemoryError-XX:OnOutOfMemoryError="chmodg+rjava_pid*.hprof"{mainclass}{args}该命令在创建堆转储后运行。例如,这将允许对当前目录中的所有堆转储文件进行组读取访问。

java - JVM 崩溃后来自 Neo4J 的 InvalidRecordException

我在CentOS上运行嵌入式Neo4J1.8、Java6。在JVM崩溃后,我开始收到以下一些异常:org.neo4j.graphdb.NotFoundException:UnabletoloadoneormorerelationshipsfromNode[1169385].Thisusuallyhappenswhenrelationshipsaredeletedbysomeoneelsejustasweareabouttoloadthem.Pleasetryagain.atorg.neo4j.kernel.impl.core.NodeImpl.loadMoreRelationships

java 。 JNI。 jvm.dll

我有VisualStudioC++项目,它必须调用一些java功能。我打算使用JNI。我已经指定了额外的包含目录:C:\ProgramFiles(x86)\Java\jdk1.7.0_10\includeC:\ProgramFiles(x86)\Java\jdk1.7.0_10\include\win32和额外的库目录C:\ProgramFiles(x86)\Java\jdk1.7.0_10\lib并且能够编译所需的代码。但由于下一个错误,我仍然无法运行它:程序无法启动,因为缺少jvm.dll...我想,最简单的方法就是将dll复制到项目目录中。但我不知道是哪一个。例如,我发现其中有几

java - cucumber-jvm 的全局 BeforeAll Hook ?

cucumber的ruby​​版本支持全局beforehook。放置在features/support目录中的*.rb文件显然只被调用一次,在任何和所有场景运行之前。参见https://github.com/cucumber/cucumber/wiki/Hooks#global-hooks这似乎是确保数据库(在测试期间以只读方式使用)在任何测试运行之前被填充(因此处于已知状态)的好方法。Cucumber的Java版本是否有类似的功能? 最佳答案 CucumberJVM本身没有这样的功能(请参阅https://github.com/c

java - 为什么会出现堆内存不足异常?

我正在尝试分配一个大矩阵(大约10GB)。我正在使用64位JVM开发64位机器。然后我的进程应该有可用的2^64字节并且我已经将JVM堆大小设置为128G(如果这很重要,我的机器中有16GB的RAM)。我的理解是我应该从操作系统获取内存,不需要的矩阵单元将被操作系统换出。但是我遇到了上述异常。编辑:这就是我定义矩阵的方式:Jama.MatrixA=newMatrix(num_words,num_documents);其中num_words大约为100k,num_documents大约为35k。另外值得一提的是类型是double编辑2:相关标志:-Xms40m-Xmx128g-d64

JAVA - Class 类和 *.class 文件之间的区别?

*.class文件和Class类API之间有些东西我不明白。让我解释一下:我有一个代表java类的文件A.java:publicclassA{...}Classclazz=A.class;当我编译A.java时,我得到一个A.class文件(字节码)。A.class文件(字节码)和代表实例类(A.class)的clazz之间有什么关系吗?它们是同一回事吗?谢谢 最佳答案 *.class文件是磁盘上的文件,A.class是内存中的类对象。 关于JAVA-Class类和*.class文件之间

java - 为什么 Class.getPackage 会为来自不同包的类返回相同的包?

我做了一个新的ClassLoader并让它定义一个新的Class,这意味着新类应该在一个新的命名空间中,据我所知。奇怪的是,当我调用Class.getPackage在新类上,它返回的对象与在我的主命名空间中的任何其他类上调用getPackage返回的对象完全相同。根据JVMspec:Theruntimepackageofaclassorinterfaceisdeterminedbythepackagenameanddefiningclassloaderoftheclassorinterface.所以换句话说,如果你有两个类在同一个包中,但是被不同的类加载器加载,它们被认为是在不同的包中