Tag: jvm

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

我创建一个新的ClassLoader并使它定义一个新的Class ,这意味着新的类应该在一个新的命名空间中,它就是AFAIK。 奇怪的是,当我在新类上调用Class.getPackage时,它返回与在我的主命名空间中的任何其他类上调用getPackage返回的完全相同的对象。 根据JVM规范 : 类或接口的运行时包由包名称和类或接口的类加载器定义。 换句话说,如果在同一个包中有两个类,但是由不同的类加载器加载,则它们被认为是在不同的包中。 (这也可以通过下面的测试用例中的reflection来“确认”。) 那么当我这样做时,我会从两个类的getPackage得到相同的结果? 这是我的测试: package pkg; import java.io.*; // Yes, you can try commenting this class, you’ll get the same result. class LoadedClass { LoadedClass() { System.out.println(“LoadedClass init”); } } class MyClassLoader extends ClassLoader { Class defineClass(String name, byte[] b) { return defineClass(name, b, 0, b.length); } } class […]

Java在哪里做局部变量,对象引用,实例变量

我目前正在学习java,堆栈和堆的内存概念,我知道局部变量和方法调用都存在于一个叫做堆栈的地方。 和对象住在堆里面。 但是如果该局部变量包含一个对象呢? 或者有对象参考? public void Something(){ Duck d = new Duck(24); } 它仍然存在于堆栈中吗? 实例变量在哪里? 请尽量保持简单。 谢谢。

热点JVM Bytecode Interpreter是一个跟踪JIT吗?

这个问题几乎说明了一切,即使通过VM规范,我也一直在寻找答案,但我没有明确说明。

线程创建监听器

是否可以在java中编写线程创建监听器? 例如使用aop?! 我的意思是这样的,如果我的应用程序创建一个线程,我想在我自己的表,容器或其他东西中注册这个对象。

JVM退出后,守护程序线程如何生存?

我正在阅读有关Java的setDaemon()方法的文档,当我读到JVM退出而不等待守护程序线程完成时,我感到很困惑。 但是,由于本质上守护程序线程是Java Thread ,它可能依赖于在JVM上运行来实现其function,如果JVM在守护程序线程完成之前退出,守护程序线程如何能够存活?

目标applet或JVM进程突然退出

我收到消息Target applet or JVM process exited abruptly有时会Target applet or JVM process exited abruptly并且不会连续出现所以我无法在Java控制台关闭之前跟踪日志。 我尝试使用增加堆大小 , , 但它不起作用。 同样的问题已经问过。 我还尝试使用单独的JVM加载Applet http://www.techques.com/question/1-11284843/uncaught-exception:-Target-applet-or-JVM-process-exited-abruptly—from-a-firefox-extension 未捕获的exception:目标applet或JVM进程突然退出 – 来自firefox扩展 https://stackoverflow.com/questions/17676722/target-jvm-seems-to-have-already-exited

OpenJDK实现System.arraycopy

在关于JVM基于char []实现字符串创建的方式的问题之后,我提到当char []被复制到新字符串的内部时不会发生迭代,因为System.arraycopy最终被调用,它使用诸如memcpy之类的函数在原生的,依赖于实现的级别( 原始问题 )复制所需的存储器。 我想亲自检查一下,所以我下载了Openjdk 7源代码并开始浏览它。 我在OpenJDK C ++源代码中找到了System.arraycopy的实现,在openjdx/hotspot/src/share/vm/oops/objArrayKlass.cpp : if (stype == bound || Klass::cast(stype)->is_subtype_of(bound)) { // elements are guaranteed to be subtypes, so no check necessary bs->write_ref_array_pre(dst, length); Copy::conjoint_oops_atomic(src, dst, length); } else { // slow case: need individual subtype checks 如果元素不需要类型检查(例如,原始数据类型数组的情况),则调用Copy :: conjoin_oops_atomic。 Copy::conjoint_oops_atomic函数位于’copy.hpp’中: // overloaded for UseCompressedOops static void conjoint_oops_atomic(narrowOop* […]

当kafka参与微服务架构时,如何实施合同测试?

我目前正在开发一个项目,我们在微服务架构中实现了kafka。 如果您使用pact-jvm成功创建mS到kafka主题交互的合同测试用例吗? 我的实现是microservice1向REST客户端发布消息,然后REST客户端将消息发布到Kafka主题。 microservice2使用GET方法从Kafka主题中检索消息。

OpenJDK与Java HotspotVM

OpenJDK VM和Oracle Hotspot VM还有两种不同的JVM吗? 我似乎无法找到任何有关OpenJDK VM的官方文档。 即使在OpenJDK主页上也有一个开发HotSpot VM的HotSpot Group。 HotSpot组由参与HotSpot虚拟机的设计,实现和维护的开发人员组成 但是,如果我在我的Windows机器上检查java -version,它会打印出来 Java HotSpot(TM)64位服务器VM 但在我的Ubuntu VPS上 OpenJDK 64位服务器VM 如果这两个是不同的VM,它们之间的主要区别是什么? 他们有不同的运行时标志集吗?

无法访问的对象不是从堆中收集的垃圾

我在JVM堆(Java 1.7)中遇到了无法访问的对象。 正如你从图片中看到的那样(图片上的所有类都无法访问),我们有超过74%的对象没有参考,所以它应该被收集起来。 这个状态在我们的tomcat 7服务器上运行3周之后,只运行探测监控应用程序,tomcat管理器和我们的webapp,这可能是问题的根源。 我们的应用程序基于JSF 1.2,在客户端上保存状态,如下图所示 – 主要使用ViewSaveState的char数组。 当我从jVisualVM手动运行GC时,它会删除所有无法访问的对象,并且在堆达到其限制的3周之前一切正常。 如何清除某些物体? 我们的JVM参数 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=29001 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname= -Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true -Xms320m -Xmx2500m -XX:MaxPermSize=500m -XX:PermSize=96m -verbose:gc -Xloggc:/var/log/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xdebug -Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC OutOfMemoryError的STACKTRACES 我认为原因隐藏在其他地方,堆栈跟踪来自app的不同部分。 可能存在一些泄漏,但堆栈跟踪仅报告最后一个组件,该组件在没有任何内存的情况下及时声明了一些内存。 java.lang.OutOfMemoryError: Java heap space at java.util.LinkedHashMap.createEntry(LinkedHashMap.java:442) at java.util.HashMap.addEntry(HashMap.java:888) at java.util.LinkedHashMap.addEntry(LinkedHashMap.java:427) at java.util.HashMap.put(HashMap.java:509) at sun.util.resources.OpenListResourceBundle.loadLookup(OpenListResourceBundle.java:134) at sun.util.resources.OpenListResourceBundle.loadLookupTablesIfNecessary(OpenListResourceBundle.java:113) at sun.util.resources.OpenListResourceBundle.handleGetObject(OpenListResourceBundle.java:74) at sun.util.resources.TimeZoneNamesBundle.handleGetObject(TimeZoneNamesBundle.java:75) at java.util.ResourceBundle.getObject(ResourceBundle.java:389) […]