草庐IT

Cucumber-JVM

全部标签

JVM篇之内存及GC

目录一、JVM内存区域1.1程序计数器1.2虚拟机栈1.3本地方法栈1.4堆1.5方法区二、JVM运行时内存2.1新生代(轻量级GC)2.2老年代(重量级GC)一、JVM内存区域JVM内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法栈】、线程共享区域【JAVA堆、方法区】、直接内存。线程私有数据区域生命周期与线程相同,依赖用户线程的启动/结束而创建/销毁在HotspotVM内,每个线程都与操作系统的本地线程直接映射,因此这部分内存区域的生命周期也可以说是和本地线程相同。线程共享区域随虚拟机的启动/关闭而创建/销毁直接内存并不是JVM运行时数据区的一部分,但也会被频繁的使用:在JDK

JVM面试题:宝哥面试题分享(26)

JVM面试题001JDK、JRE、JVM关系?JDK(JavaDevelopmentKit):java语言的软件开发包。包括Java运行时环境JRE。JRE(JavaRuntimeEnvironment):Java运行时环境,包括JVM。JVM(JavaVirtualMachine):一种用于计算机设备的规范。Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。002什么是类加载器,类加载器有哪些?实现通过类的权限定名获取该类的二进制

java - 基于 CLR 的 JVM,反之亦然

我使用Java和.NET已经很多年了,我看到了许多JVM和CLR的实现;许多操作系统、许多供应商等,但我在这里问是否有人知道在JVM上实现CLR或在CLR上实现JVM。如果可以完成这样的桥接,它应该会让事情在运行时更具可移植性!我知道CLR和JVM之间几乎没有区别,但有很多相似之处,但是这两个运行时之间也有交叉编译器,例如XMLVM,也许可以在运行时提供此功能...这可能吗?如果不是,主要的技术障碍是什么? 最佳答案 IKVM.NET允许在顶级CLR(Mono或MS)上运行Java字节码并将Java源代码编译为CLI,当然库支持可能

java - Java JVM加载失败如何排查?

我正在开发一个用C++Builder6编写的大型(15MB)遗留32位应用程序,它需要使用第三方API与外部系统交互。API由一组内部使用Java(我假设是JNI)的DLL组成。我们的代码只与一个特定的DLL直接交互,并且在运行时延迟加载。当应用程序在客户的系统上运行时,DLL因未知原因崩溃。所以我尝试在我的系统(XPPro32位)上重现并遇到了一个不同的问题。该应用程序创建了一个尝试初始化API的线程,该线程在内部尝试加载JavaJVM但失败了,并且API向我的代码报告“JVM创建失败”错误。但是,在小型测试应用程序中运行的完全相同的线程代码可以正常工作,Java加载正常,API功能

java - 为每个键在多个 JVM 上自动更新整数

我们有一个要求,问题可以缩小为。有多个键,每个键映射到一个整数。当在JVM上接收到一个键时,您需要从共享内存中检索int值,递增它,然后将递增后的值放回共享内存。因此,当两个JVM或两个线程读取相同的值时,其中一个的更新应该始终失败,这样您就不会丢失任何线程在任何JVM上完成的任何增量。一旦更新失败,您将再次从共享内存中读取,递增它然后再次更新直到更新成功或者您已经用完了一些“N”次重试。现在我们正在使用带乐观锁定的infinispan,但行为不一致。请找到该线程的链接。https://developer.jboss.org/message/914490是否有任何其他技术可以很好地满足

java - 在 JVM 中,Thread 对象是直接绑定(bind)到 CPU 内核,还是两者之间有一个 Mapper?

我想知道的是(我找到的文档对弄清楚它不是很有帮助),当在其上执行的线程将控制权转移到硬件设备(磁盘Controller,磁盘Controller,网络I/O,...)来做一些CPU/核心无法帮助的事情。该核心是否可用于执行其他线程,还是只是停止并等待(即使有其他线程有CPU工作可用于调度)?“与核心一样多的线程”这一经常给出的建议似乎暗示了后者。 最佳答案 这是Java无法控制的。调度由操作系统完成,因此不在JVM的范围内。内核很可能在等待某些IO完成时被操作系统回收。“每个核心/处理器一个线程”的简单建议适用于CPU密集型操作。如

java - 由于 SolrJ、HttpClient、JVM 或我的应用程序中的 SSL 证书无效,类加载器泄漏?

最近几天,我在一个大型应用程序中分析了一个类加载器泄漏,我已经解决了这个问题。我的应用程序使用SolrJ,它将通过@Bean初始化。-方法:@Bean(destroyMethod="close")publicSolrClientsolrClient(){returnnewHttpSolrClient(SOLR_URL);}SolrJ(org.apache.solr:solr-solrj:5.4.1)使用ApacheHttpClient(org.apache.httpcomponents:httpclient:4.4.1)。HttpClient通过使用像javax.net.ssl.SSL

java - HTTPS nonProxyHosts 的 JVM 参数

所以我为_JAVA_OPTIONS加载了一个环境变量export_JAVA_OPTIONS="-Dhttp.proxyHost=my-proxy.com-Dhttp.proxyPort=1080-Dhttps.proxyHost=my-proxy.com-Dhttps.proxyPort=1080-DsocksProxyHost=my-socks-proxy.com-Dhttp.nonProxyHosts=\"localhost|127.0.0.1|*.local|*.my-co.com\""但是,当我使用ApacheHTTP客户端API从Scala代码尝试它时,我无法让它忽略内部服务

java - JVM 内存分配

您好,我有一个关于继承的问题。在Java中,子类对象内部有其父类(superclass)的对象?当JVM为子类对象分配空间时,为父类(superclass)字段/方法分配空间?谢谢。例子:classBar{publicStringfield;publicBar(){this.field="Bar";}}classFooextendsBar{publicStringfield;publicFoo(){this.field="Foo";}publicvoidprintFields(){System.out.println("Base:"+super.field);System.out.pr

java - JVM - 在正在运行的(非检测的) session 中获取类的实例

我需要通过在给定类的实例上调用特定方法来停止进程。这个进程已经运行了一天,如果我硬关闭它,我会失去很多工作。由于API中的一个错误,GUI连接错误并且没有调用正确的停止函数。我附加了一个交互式Java(Scala)解释器,所以如果我能掌握流程的实例,我就可以轻松调用正确的方法。我不在调试session中,没有com.sun.jdi。我可以在堆栈跟踪转储中看到该实例,但StackTraceElement不包含实际实例,仅包含类和行号。在没有特定检测的情况下,在运行的session中是否有任何方法可以通过它的类,通过线程转储来获取该实例? 最佳答案