草庐IT

java - 命令 "java"是 JVM 吗?

每当他们说在JVM中运行.class文件时。他们的意思是在终端中使用命令“java”吗?或者您可以点击它打开它吗? 最佳答案 是的,如果您安装了JRE,java应该是JVM。 关于java-命令"java"是JVM吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2044817/

java - 如何让 Netbeans 在运行测试时使用特定的 JVM 参数?

我将Netbeans与Maven和TestNG结合使用。当使用mavensurefire插件运行测试时,我可以设置一些配置参数,特别是用于我的测试(跟踪)的日志记录级别:-Dorg.slf4j.simpleLogger.defaultLogLevel=trace-Dorg.slf4j.simpleLogger.logFile=System.out但是,当运行特定的测试文件(CTRL+F6)或测试方法(“运行重点测试方法”)时,Netbeans不使用surefire(这很好),因此会忽略这些参数。Netbeans以这种方式运行测试时,有没有办法更改它使用的JVM参数?这有点类似于this

简单聊聊JVM中的几种垃圾收集算法

一、摘要在之前的文章中,我们介绍了对象的创建过程,以及运行期的相关优化手段。本文主要介绍对象回收的判定方式以及垃圾对象的回收算法等相关知识。下面我们一起来了解一下。二、对象回收判定方式当一个对象被创建时,虚拟机会优先分配到堆空间中,当对象不再被使用了,虚拟机会对其进行回收处理,以便释放内存空间,这个过程也被称为垃圾对象回收。那么如何找到对象是否可以进行回收呢?一般有两种方式。引用计数法可达性分析法下面我们一起来了解下相关知识。2.1、引用计数法这个方法的实现思路是:在对象中维护一个引用计数器,每当一个地方引用这个对象时,计数器值+1;当引用失效时,计数器值-1。当对象的计数器值为0,表示这个对

java - 堆内存使用中的 PS Old Gen 内存 : GC settings for Java Out Of Memory Exception

以下是我的JVM设置:JAVA_OPTS=-server-Xms2G-Xmx2G-XX:MaxPermSize=512M-Dsun.rmi.dgc.client.gcInterval=1200000-Dsun.rmi.dgc.server.gcInterval=1200000-XX:+UseParallelOldGC-XX:ParallelGCThreads=2-XX:+UseCompressedOops-Djava.net.preferIPv4Stack=true-Djboss.modules.system.pkgs=org.jbos88,server=y,suspend=n问题:总

java - G1 : What are the differences between mixed gc and full gc?

对于垃圾优先收集器,younggc意味着仅在年轻代执行gc,mixedgc将同时清理年轻代和老年代。那么什么是fullgc?为什么它比mixedgc持续时间更长?我进行了一些搜索,但没有找到任何解释fullgc的帖子。 最佳答案 来自甲骨文G1GCblog和technetworkarticle年轻的GC:YoungGC的集合仅包含年轻/幸存者区域。混合GC:MixedGC的收集集既包括年轻/幸存者区域,也包括老区域。巨大的对象和巨大的分配对于G1GC,任何超过区域大小一半的对象都被视为“Humongousobject”。这样的对象在

JVM内存结构

我们都知道,我们写的Java程序需要先经过编译,生成了.class文件(字节码文件)。然而,计算机并不能直接解释.class文件里面的内容,这时候就需要一个能加载、解释.class文件并且能按.class文件里的内容进行处理的一个东西--JVM。JVM,就是Java虚拟机。它是一种规范,有针对不同系统的特定实现(Linux,Windows,macOS)。这样,相同的字节码就能在不同的系统上运行,实现了跨平台运行(WriteOnce,RunAnywhere)。JVM的内存结构上图是JDK1.8的JVM内存结构,可以看出内存结构分为程序计数器、Java虚拟机栈、本地方法栈、堆、元空间,其中程序计数

java - 在运行时为 OS 释放 java 内存

假设我有一个SwingsJava应用程序,我将最小堆设置为64MB,最大堆设置为2GB,当用户启动应用程序时,登录屏幕会显示,此时app使用了64MB,对吧?在我的Windows7中,我可以看到java应用程序分配了64MB来自操作系统的内存资源监视器(实际上,它超过64MB,因为JVM需要一些内存来完成它的任务)。之后用户做了一些非常繁重的工作然后应用程序使用2G。然后用户注销应用程序,再次显示登录屏幕(应用程序尚未关闭)。此时应用程序真正的内存正在使用64MB(假设这是完美的内存管理应用程序),但是对于操作系统,此应用程序仍在使用2GRAM,我可以在操作系统的资源监视器上看到它。我

java - 限制JVM不调用GC

JVM究竟是如何确定它应该使用垃圾收集器的?有什么方法可以限制JVM不调用GC? 最佳答案 HowexactlyJVMdeterminesthatitshouldGarbageCollector?这取决于。如果您使用的是吞吐量收集器,那么JVM会在无法在需要分配的空间(或其中一个空间)中分配新对象时运行GC。如果您使用的是低暂停收集器,那么JVM会在可用空间比率降至可配置水平以下时触发GC。IsthereanywaytorestrictJVMnottoinvokeGC?没有。如果JVM决定它需要运行GC,它就会运行它。您唯一可以做的

java - 为什么proguard不混淆方法主体?

我正在使用ProGuard混淆我的.jar程序。一切正常,除了ProGuard不会混淆方法主体中的局部变量。这是一个例子:原始:混淆:以黄色突出显示的变量名称应该被混淆,但不是。我如何也对它们进行混淆(将它们重命名为a,b,c等?)这是我的ProGuard配置:http://pastebin.com/sb3DMRcC(以上方法不是来自排除的类之一)。 最佳答案 Whyproguarddoesnotobfuscatemethodbody?因为它不能。方法参数和局部变量的名称在编译时根本不会存储。您看到的名称是由反编译器生成的。对于已编

java - JVMTI 代理如何在启动时设置 JVM 标志?

为了支持更好的分析数据,我希望我的JVMTI代理启用几个JVM标志。有问题的代理人是Honest-Profiler并且它只能在启动时加载。我想启用标志:-XX:+UnlockDiagnosticVMOptions-XX:+DebugNonSafepoints根据记录的问题here如果标志没有打开,我们会得到一个有偏见的配置文件。最好不要警告用户而只启用标志。 最佳答案 至于DebugNonSafepoints,您甚至不需要设置此标志。看debugInfoRec.cpp:staticinlineboolcompute_recordin