草庐IT

jvm-bytecode

全部标签

java - JVM GC 是否会在引用比较过程中移动对象,导致即使双方都引用同一个对象也无法进行比较?

众所周知,GC有时会在内存中移动对象。据我了解,只要在移动对象时(在调用任何用户代码之前)更新所有引用,这应该是完全安全的。但是,我看到有人提到引用比较可能是不安全的,因为在引用比较中间被GC移动了对象,这样即使两个引用都应该引用同一个对象,比较也可能失败?即,是否存在以下代码不会打印“true”的情况?Foofoo=newFoo();Foobar=foo;if(foo==bar){System.out.println("true");}我尝试用谷歌搜索,但由于缺乏可靠的结果,我相信说这话的人是错误的,但我确实找到了各种论坛帖子(likethisone),似乎表明他是正确的。但是那个帖

java - JVM GC 是否会在引用比较过程中移动对象,导致即使双方都引用同一个对象也无法进行比较?

众所周知,GC有时会在内存中移动对象。据我了解,只要在移动对象时(在调用任何用户代码之前)更新所有引用,这应该是完全安全的。但是,我看到有人提到引用比较可能是不安全的,因为在引用比较中间被GC移动了对象,这样即使两个引用都应该引用同一个对象,比较也可能失败?即,是否存在以下代码不会打印“true”的情况?Foofoo=newFoo();Foobar=foo;if(foo==bar){System.out.println("true");}我尝试用谷歌搜索,但由于缺乏可靠的结果,我相信说这话的人是错误的,但我确实找到了各种论坛帖子(likethisone),似乎表明他是正确的。但是那个帖

Java - 获取 JVM 中加载的所有类的列表

我想获取属于某个包的所有类及其所有子类的列表。这些类可能已加载到JVM中,也可能尚未加载。 最佳答案 这不是程序化解决方案,但您可以运行java-verbose:class....JVM会转储它正在加载的内容,以及从哪里加载。[Opened/usr/java/j2sdk1.4.1/jre/lib/rt.jar][Opened/usr/java/j2sdk1.4.1/jre/lib/sunrsasign.jar][Opened/usr/java/j2sdk1.4.1/jre/lib/jsse.jar][Opened/usr/java/

Java - 获取 JVM 中加载的所有类的列表

我想获取属于某个包的所有类及其所有子类的列表。这些类可能已加载到JVM中,也可能尚未加载。 最佳答案 这不是程序化解决方案,但您可以运行java-verbose:class....JVM会转储它正在加载的内容,以及从哪里加载。[Opened/usr/java/j2sdk1.4.1/jre/lib/rt.jar][Opened/usr/java/j2sdk1.4.1/jre/lib/sunrsasign.jar][Opened/usr/java/j2sdk1.4.1/jre/lib/jsse.jar][Opened/usr/java/

java - JVM是开源代码吗?

JVM是开源代码吗?如果没有,如何获取JVM的代码? 最佳答案 这完全取决于你使用的JVM。如果您使用OpenJDKJVM,那么您可以从here获取源代码.如果您使用KaffeJVM,您可以从here获取源代码.如果您使用SunJVM版本6或更高版本,则可以从here获取源代码.如果您使用早于6的SunJVM,那么您通常可以在学术许可下获得源代码。如果您使用IBM、Oracle、HP或其他JVM,则源代码未打开。2013年5月更新仍然可以通过上面的链接访问第6版源,也可以通过thislink访问.后一个链接还包括一个方便的genea

java - JVM是开源代码吗?

JVM是开源代码吗?如果没有,如何获取JVM的代码? 最佳答案 这完全取决于你使用的JVM。如果您使用OpenJDKJVM,那么您可以从here获取源代码.如果您使用KaffeJVM,您可以从here获取源代码.如果您使用SunJVM版本6或更高版本,则可以从here获取源代码.如果您使用早于6的SunJVM,那么您通常可以在学术许可下获得源代码。如果您使用IBM、Oracle、HP或其他JVM,则源代码未打开。2013年5月更新仍然可以通过上面的链接访问第6版源,也可以通过thislink访问.后一个链接还包括一个方便的genea

java - JVM 堆参数

在阅读了关于该主题的已提出问题并进行了大量谷歌搜索后,我仍然无法清楚地了解-Xms选项我的问题是:java-Xms=512m-Xmx=512m和java-Xms=64m-Xmx=512m有什么区别?现在我有以下答案:唯一的区别是在我的应用程序运行期间将运行的垃圾回收数量和内存分配数量。我说的对吗?这是我回答这个问题的原因:将-Xms选项设置为512m不会导致我的应用程序在启动后使用真正的512M物理内存。我想这与现代操作系统虚拟内存管理和惰性页面分配有关。(我注意到将-Xms设置为512M或64M根本不会改变由Linux上的top报告的初始使用内存或通过Windows上的任务管理器)有

java - JVM 堆参数

在阅读了关于该主题的已提出问题并进行了大量谷歌搜索后,我仍然无法清楚地了解-Xms选项我的问题是:java-Xms=512m-Xmx=512m和java-Xms=64m-Xmx=512m有什么区别?现在我有以下答案:唯一的区别是在我的应用程序运行期间将运行的垃圾回收数量和内存分配数量。我说的对吗?这是我回答这个问题的原因:将-Xms选项设置为512m不会导致我的应用程序在启动后使用真正的512M物理内存。我想这与现代操作系统虚拟内存管理和惰性页面分配有关。(我注意到将-Xms设置为512M或64M根本不会改变由Linux上的top报告的初始使用内存或通过Windows上的任务管理器)有

java - 默认方法一会返回true,然后返回false? (可能的 JVM 错误)

我对以下代码有疑问,我将其隔离为最封闭的形式,我使用的是Java8,它几乎已准备好发布(2014年3月18日),所以我预计实现本身不会出现严重问题,所以它可能/必须是我自己的代码:注意:代码是用Java8编写的,具有各种新特性,包括接口(interface)中的default方法实现。publicabstractclassDrawableimplementsDrawableInterface{}interfaceDrawableInterface{defaultpublicbooleanisShadowReceiver(){returnfalse;}defaultpublicboole

java - 默认方法一会返回true,然后返回false? (可能的 JVM 错误)

我对以下代码有疑问,我将其隔离为最封闭的形式,我使用的是Java8,它几乎已准备好发布(2014年3月18日),所以我预计实现本身不会出现严重问题,所以它可能/必须是我自己的代码:注意:代码是用Java8编写的,具有各种新特性,包括接口(interface)中的default方法实现。publicabstractclassDrawableimplementsDrawableInterface{}interfaceDrawableInterface{defaultpublicbooleanisShadowReceiver(){returnfalse;}defaultpublicboole