草庐IT

java - 空循环比java中的非空循环消耗更多的内存

我正在阅读有关Java性能调优的文章并遇到了这个问题。当我们运行时publicclasstest{publicstaticvoidmain(Stringa[]){for(inti=0;iJVisualVM显示了内存消耗图表:但是当我们运行下面的代码时,publicclasstest{publicstaticvoidmain(Stringa[]){for(inti=0;iJVisualVM呈现锯齿波:为什么会这样?对于这两种情况,如何以及为什么更改gc触发限制? 最佳答案 关于你的v1forloops,你的局部变量,一旦它退出它的范围

java - Myclass.class.getProtectionDomain().getCodeSource() 返回空路径

我正在尝试使用以下方法查找正在运行的jar文件的位置:FilejarFile=newFile(JarPath.class.getProtectionDomain().getCodeSource().getLocation().toURI());当我在IDE(eclipse)上运行它时,它会返回正确的路径。但是当我将jar作为可执行文件运行时,返回的代码源是rsrc:./关于如何获得正确路径的想法? 最佳答案 尝试不同的方法来获取位置。StringjarFilePath=ClassLoader.getSystemClassLoader

java - 为什么 long 和 double 在 Java 类的常量池中占用两个条目?

JavaVirtualMachineSpecification声明8字节(例如long和double)常量占用constant_pool表中的两个条目,不像其他常量只占用每一个条目。该规范还提到这是一个糟糕的选择,但没有解释原因。这个设计决定背后的最初原因是什么?当时的好处是什么? 最佳答案 明确的答案需要与参与Java早期开发的人员交谈。但是,我认为很明显,字节码格式最初设计时考虑的是朴素解释器的性能。考虑如何编写一个非常简单的Java字节码解释器。没有JIT,没有优化等。您只需执行每条指令即可。假设常量池在加载时已被解码为32位

java - 如何在Eclipse中调试openjdk 9(主要是hotspot)源码?

我想调试热点源码,比如在NativeCode中设置一些断点,来学习一下。所以我通过Eclipse构建了openjdk9源代码并成功,下面是build设置和构建输出。然后我尝试配置“调试配置”,但是我不知道如何设置c/c++应用程序,有人建议它为JDK7设置为“openjdk/hotspot/build/Linux/linux_amd64_compiler2/jvmg”,但是我在jdk9的内置输出文件夹中找不到它,我试图将它设置为“~/jdk9/build/linux-x86_64-normal-server-fastdebug/jdk/java”,然后单击“调试”按钮进行调试,但是失败

java - 不可思议的堆栈跟踪

通过分析一个问题,我试图理解这个奇怪的堆栈跟踪:Thread3049:(state=BLOCKED)-java.lang.Object.wait(long)@bci=0(Compiledframe;informationmaybeimprecise)-java.io.PipedInputStream.read()@bci=142,line=326(Compiledframe)-java.io.PipedInputStream.read(byte[],int,int)@bci=43,line=377(Compiledframe)-org.apache.http.entity.InputS

java - 对未签名的 Java 小程序可以做什么的限制?

我正在尝试编译对未签名的Javaapplet施加的所有限制的完整列表(定义为普通Java应用程序可以做的事情,但未签名的Javaapplet不能做的事情)。这是我到目前为止编制的列表:一个未签名的Javaapplet...无法访问本地文件系统。无法访问系统剪贴板。无法启动打印作业。无法连接到任何第三方服务器(除小程序源自的服务器之外的任何服务器)或从中检索资源。不能使用多播套接字。无法创建或注册SocketImplFactory、URLStreamHandlerFactory或ContentHandlerFactory。无法监听传入的套接字连接。无法监听数据报。无法访问某些系统属性(j

java - 远程分析 JVM

我需要远程分析JVM的CPU使用情况、IO统计信息和文件描述符/处理程序计数,并同时支持*NIX和Windows平台。我尝试使用SIGARAPI,它使用底层native代码实现很好地抽象了平台,但它不支持远程分析。是否有替代API可以执行此操作?或者,扩展用于远程JVM监控的SIGAR框架是否可行?关于在哪里查看的任何提示都会有所帮助。提前致谢! 最佳答案 Afaik,JVM通常可以配置为允许远程分析。EclipseTPTP具有概要分析甚至漂亮的图表功能,他们在DataCollectionSubsystem中提到了网络JVisual

java - JDI:如何像在调试器中那样暂停 Java 应用程序 (JVM)

我正在寻找潜在的JDIAPI,以便在JVM执行期间的任意点暂停JVM。看着BreakPointRequestcreateBreakpointRequest方法需要一个特定的位置。是否有任何其他API不需要位置或以某种方式获取可以传递以创建断点的当前位置。我基本上是在寻找一种方法来附加和暂停应用程序,然后使用JVMTI代理接收BreakPoint事件的回调以执行进一步处理。谢谢 最佳答案 断点只对源代码中的某个位置有意义。任意暂停您的应用程序可能最好通过暂停当前在JVM中运行的所有线程来完成。看看SuspendThreadList()

java - JVM 内存问题

请帮我解决一个问题。我的CentOS有4GBRAM,Tomcat配置有大约1500MB内存。在某些时候,当我的机器达到配置的最大线程数(即200)时,它会挂起。我们必须重新启动应用程序服务器才能使其再次运行。参数是:JAVA_OPTS="-server-Xss128k-Xms2048m-Xmx2048m-XX:MaxPermSize=512m-XX:NewRatio=3-XX:SurvivorRatio=6-XX:+UseConcMarkSweepGC-XX:+CMSIncrementalMode-XX:CMSInitiatingOccupancyFraction=80-Dfile.e

java - Java 6 中的垃圾优先 (G1) 收集器是 "production ready"吗?

G1垃圾收集器在最新版本的Java(6)中是否仍被认为是实验性的?它是否安全并可用于生产?编辑:我指的是OracleJVM。 最佳答案 不建议这个Oracle文章,它仍然实验。它将取代CMS,但它的性能似乎还不够好:RelativePerformanceofJava'sGarbageFirst(G1)GarbageCollector?编辑:所以现在G1在JDK7u4中得到“完全支持”,它不再被认为是实验性的,所以我猜它是productionready!. 关于java-Java6中的垃圾