草庐IT

jvm-default

全部标签

java - 为什么JVM在进入无限递归时不会崩溃?

我正在编写一个要加载到JVM中的共享库,但下面的行为让我卡住了。这是我的Java类:packagecom.test;publicclassUnixUtil{static{System.loadLibrary("myfancylibrary");}staticnativeintopenReadOnlyFd(Stringpath);staticnativeintcloseFd(intfd);}publicclassMain{publicstaticvoidmain(String[]args){intfd=UnixUtil.openReadOnlyFd("/tmp/testc");UnixU

java - JVM/CLR 源代码兼容语言选项

我有一个开源Java数据库迁移工具(http://www.liquibase.org),我正在考虑将其移植到.Net。该工具的大部分(至少从复杂性方面来说)是围绕逻辑的,例如“如果您要添加主键并且数据库是Oracle,请使用此SQL。如果数据库是MySQL,请使用此SQL。如果主键是命名并且数据库是Postgres使用此SQL”。我可以forkJava代码库并(手动和/或自动)隐藏它,但是随着对上述逻辑的更新和错误修复,我不想将它应用于两个版本。我想做的是将所有这些逻辑移动到一种可以被Java和.Net版本天真地编译和使用的形式。我要转换的代码不包含任何高级库使用(JDBC、Syste

java - 终结器(和 ReferenceQueue 的)是否在 JVM 终止时运行?

这个问题在这里已经有了答案:DoesJVM/GCcall`finalize()`onprogram/threadexit?(2个答案)关闭9年前。我知道youcan'tcountonfinalizers清理你的烂摊子(即免费资源),但我想知道-当JVM正常终止(System.exit()/没有剩余线程)时,java对象是否得到GC'ed/finalized?/p>编辑:因此,不能保证触发GC,因此finalize()也不能保证,但是ReferenceQueue会起作用吗?

九款常见的 JVM 垃圾回收器

JVM不仅是大厂面试的一个高频问题,也是Java程序员跨入高职级必须掌握的知识点,垃圾回收器作为JVM中核心的一环,了解它的原理,可以帮助我们更好地调优和故障排除,因此,今天我们就来聊聊JVM中9款常见的垃圾回收器。背景 因为Java虚拟机的类型比较多,如果没有特殊说明,本文特指HotSpot虚拟机,在分享回收器之前,我们首先对HotSpot虚拟机背景做个简单的介绍。HotSpotVM,最初是由“LongviewTechnologies”这家小公司设计,并且一开始也不是为Java语言研发。1997年,Sun公司收购了这家公司,从而也就得到了HotSpot虚拟机,在Sun公司的一番优化下,Hot

java - 如何向相邻jvm中的akka​​系统发送消息?

我在一个JVM中使用HelloActor启动了akka系统,并尝试从另一个JVM中的客户端向它发送消息。没有任何效果。我应该如何正确地做到这一点?这是代码:简单服务器packageakkaSample.severalSystemsimportakka.actor.{Props,Actor,ActorSystem}importcom.typesafe.config.ConfigFactoryclassHelloActorextendsActor{overridedefpreStart():Unit={println("Helloactorstarted")}defreceive={cas

java - 在不重启 JVM 的情况下在 JAVA 中重新加载 Kerberos 配置

以下代码用于使用Java+Kerberos向WindowsAD服务器进行身份验证,并且工作正常-publicclassKerberosAuthenticator{publicstaticvoidmain(String[]args){StringjaasConfigFilePath="/myDir/jaas.conf";System.setProperty("java.security.auth.login.config",jaasConfigFilePath);Stringkrb5ConfigFilePath="/etc/krb5/krb5.conf";System.setProper

Windows使用adb命令安装apk文件报错adb: failed to run abb_exec. Error: closedadb: retrieving the default device

在运行ADB(AndroidDebugBridge)时遇到了一些问题。这是一个用于与安卓设备进行通信并执行各种操作的命令行工具。首先,"com.lion.gallery.overlay.ovf"这个程序无法运行可能是由于该应用程序存在错误或者与其他应用冲突导致的。你可以尝试卸载或更新此应用,然后重新安装以查看是否可以解决问题。其次,"adb:failedtorunabb_exec."和"adb:connecterrorforwrite:"的报错可能表示你的ADB服务器没有正确地连接到设备或者是设备的驱动程序未被正确安装和配置。请确保你已经启动了USB调试模式并且已经按照正确的步骤连接设备和电脑

java - 在字节码中确定 super() 方法调用的位置是所有构造函数必须在 JVM 上执行的操作

我想知道在分析构造函数的字节码时是否有一种明显且快速的方法来确定super()在哪里代码结束于。更具体地说,与Java形成鲜明对比的是,Java在构造函数中调用任何super()。构造函数方法是可选的(或者更确切地说,当不存在时——隐式),在字节码世界中它总是需要的。出于黑魔法的目的,我需要通过字节码分析和最简单的可用方法来了解INVOKESPECIAL是什么对应于Java世界的super()的调用打电话。我会留给你一个很难的例子:publicstaticclassA{publicA(Objecto,Objectb){}}publicstaticclassBextendsA{publi

java - JVM 选项 XX :UseFastEmptyMethods/XX:UseFastAccessorMethods

同时查看possibleJVMflagsforoptimizinglaunchingstartuptime在我的RCP产品中,我发现了这些名字吸引人的-XX:UseFastEmptyMethods和-XX:UseFastAccessorMethods。这些标志似乎在JDK-6上可用(默认情况下打开),而在JDK-7上它们默认关闭。另外,我读到这种优化的权衡是它们不会增加方法调用计数器。不使用调用计数器有什么影响?这会影响垃圾收集吗? 最佳答案 为了正确获取方法的调用次数,以便虚拟机更好地识别代码中的热点。根据here的讨论Ifyou

java - 所有这些默认线程都应该运行吗?它们能让我的 JVM 保持活力吗?

我对我的应用程序在执行期间生成的线程及其状态有疑问。我有一个Swing应用程序,我注意到在某些测试场景中使用JavaVisualVM时出现了一些奇怪的行为。无所事事地运行我的程序30多分钟(刚开始并让它继续运行)我注意到以下内容。首先,在“线程”选项卡中,我看到很多Activity线程。阅读(除其他外)Defaultthreadslike,DestroyJavaVM,ReferenceHandler,SignalDispatcher和WhatarethesethreadswhicharespwanedwhenaJavaapplicationbeginsitsexecution?我知道这