Tag: jvm

如何在运行时解决jar冲突?

我有两个jar子有冲突。 它们都包含一个具有相同包名和类名的类。 由于同样的原因,我无法删除其中任何一个。 那么,有什么方法可以解决这个问题吗? 理想情况下,我希望有一种方法可以让我决定在运行时应该调用jar的类。 我非常感谢任何人的帮助。

Java在线程启动之前发生

我读到某个地方,开始一个线程对关系之前发生的事情有一些特殊的影响。 现在我不确定我的代码是否保证在关系之前发生的事情,所以请赐教。 我有一个Dispatcher线程和一个实现Runnable接口的Worker类。 Dispatcher线程创建Worker的新实例,并通过带元素的add方法填充Worker实例中的LinkedList 。 然后,Dispatcher通过execute方法将Worker实例交给ExecutorService 。 然后,Worker类中的run方法开始从LinkedList访问和删除东西。 新启动的Worker实例是否看到与Dispatcher一样的LinkedList状态? 或者可能是LinkedList处于某种不一致的状态? 我是否必须在同步方法中填充LinkedList ?

Java调试器:是否可以选择性地挂起线程?

在我过去作为C / C ++程序员的生活中,在某些平台和调试器组合上有可能选择性地挂起线程。 在点击断点之后,可以发出命令(或点击GUI中的内容)来冻结/解冻(暂停/唤醒)线程。 在进一步的step / next / run / continue命令时,挂起的线程不会执行任何指令。 今天可以使用任何JVM或Java IDE吗? 我使用IntelliJ而我看不到该function,也无法通过Google找到任何信息。 澄清: 我不是在询问断点的线程策略,例如,挂起当前线程或所有线程。 我知道JVM调试器function。 开发环境是vanilla:我使用IntelliJ Java IDE,我可以访问相关的源代码。 最后,我意识到“Java调试器”是一个有点模糊的术语。 AFAIK,Sun发布了一种调试线程格式,调试器使用该格式与JVM进行通信。 也许每个JVM(IBM vs Sun vs IcedTea vs ???)支持不同的调试function,但我只熟悉Sun / Oracle JVM。

tomcat隔离webapps

多个webapp使用相同的jvm在同一个tomcat上运行。 有时,一个有内存泄漏的webapp会导致整个jvm崩溃并影响其他webapps。 任何建议如何隔离,而无需使用多个jvm和tomcat

invokestatic on interface中的静态方法

反汇编一些Java 8代码我发现一些对接口中静态方法的invokestatic调用(特别是java.util.function.Function.identity() )在const pool中使用了InterfaceMethodRef; 这就是javap -s -c -vp向我展示的内容: 15: invokestatic #66 // InterfaceMethod java/util/function/Function.identity:()Ljava/util/function/Function; 根据JVM 8规范,这是不可能的,当我在带有Java 7 major version=51 ( major version=51 )的classfile中使用此指令时,它已在此指令上抛出VerifyError。 然而,当我将主要版本更改为52 ,它开始像魅力一样工作。 请注意,我在Oracle JDK 1.8.0_60上运行。 我想知道为什么需要这个更改(调用的方法是静态链接的,不是吗?)以及是否记录在任何地方。

javaexception会终止整个java应用程序吗?

我曾经认为,当发生exception时,整个java应用程序将被终止。 例如,我编写了一个测试函数来测试我的想法。 public void test(){ File fileDir=new File(sourceDataDir); if(fileDir.exists()){ File[] files = fileDir.listFiles(); for(int index=0 ; index<files.length ; index++){ System.out.println("index = "+index); File file = files[index]; if(index == 1)//delete a file to cause a FileNotFoundException file.delete(); try { BufferedReader in = new BufferedReader(new FileReader(file)); } catch (FileNotFoundException e) { e.printStackTrace(); } } } } 我删除文件以手动导致FileNotFoundException […]

如何使用Java Mission Control监视远程服务器中的JVM?

是否可以使用JMC监视远程服务器中的JVM? 如果是这样我该怎么办? 在使用之前是否有任何特定的Java标志被调用? 我尝试创建一个新的JVM连接,指定它在向导中提出的所有详细信息。 但是,当我测试连接时,它无法连接到该服务器。 由于有一些配置要激活本地jvm搜索选项,我的猜测是我在这里遗漏了一些东西。(假设服务器防火墙没有阻止这个连接)感谢是否有人可以帮助解决这个问题。

java中操作系统的名称(不是“os.name”)

我想知道如何掌握jvm运行的那种操作系统。 它也必须是“安全的”,因此System.getProperty(“os.name”)实际上不是一个选项,因为它可以通过-D指令轻易绕过。 通过“安全”,我的意思是不容置疑。 它适用于桌面应用程序。 用户总是可以对代码进行反混淆,反编译,编辑和重新编译,但这比将-D传递给jvm要困难得多。 我们想要修补不平凡,而不是不可能(因为那是不可能做到的)。

Eclipse如何找到JRE或JDK locaton?

根据Eclipse常见问题解答。 我看了 Eclipse DOES NOT consult the JAVA_HOME environment variable. 我怀疑eclipse是如何初始化Virtual Machine 。 它不知道Java的位置。 我的eclipse.ini文件没有-vm配置。 我仍然可以运行eclipse。 来源 UPDATE 根据Eclipse 安装指南 。 Eclipse does not write entries to the Windows registry 。

调整java类以获得CPU缓存友好性

在设计java类时,有哪些建议可以实现CPU缓存友好性? 到目前为止我学到的是应该尽可能多地使用POD(即int而不是整数)。 因此,在分配包含对象时将连续分配数据。 例如 class Local { private int data0; private int data1; // … }; 比缓存更友好 class NoSoLocal { private Integer data0; private Integer data1; //… }; 后者将需要对Integer对象进行两次单独的分配,这些对象可以位于内存中的任意位置,尤其是。 GC运行后。 OTOH第一种方法可能会导致数据重复,以防数据可以重复使用。 有没有办法让它们在内存中彼此靠近,以便父对象及其’包含元素一次在CPU缓存中,而不是在整个内存中任意分布加GC将它们保持在一起?