Tag: jvm arguments

如何在过度的GC中加快OOM?

偶尔我的JVM会耗尽内存,而不是OOMing我可以从中恢复(或者是dumpDumpOnOOM和调试),它会在GC丢失几个小时后才会丢失内存。 这与(未答复的)问题基本相同: 如何配置Java GC Overhead Limit? 但我怀疑答案是你不能调整98%/ 2%的阈值,所以我要求任何方式达到类似的效果。 注意过多的GC,最好导致OOM,或者杀死JVM等。

什么是给jvm的线程堆栈大小选项(-Xss)? 为什么Windows PC中至少有68k的限制?

我见过JVM选项-Xss – 它到底做了什么? 这个链接,但我的问题是这个选项是如何有用的。 因为,如果我们为-Xss值设置了一个非常小的限制,那么线程可能无法正常工作,因为它可能会在大多数情况下抛出stackOverflow错误。 为什么这个值至少有64k的限制? 我是如何得到这个64k限制的,当我试图在IntelliJ iDE上配置运行时vm选项时,我试图给出一些像10k这样的东西,它弹出这个错误,说它需要至少64k的线程堆栈大小。 另一个问题是,如何从java程序中找到我的嵌入式设备中运行的jvm的默认线程堆栈大小? 谢谢, 森

如何通过JNI加载JVM失败时如何收到错误消息?

我想检索一条错误消息,解释为什么jvm无法加载。 从这里提供的示例: http://java.sun.com/docs/books/jni/html/invoke.html 我提取了这个例子: /* Create the Java VM */ res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); if (res < 0) { // retrieve verbose error here? fprintf(stderr, "Can't create Java VM\n"); exit(1); } 在我的具体情况下,我在vm_args中提供了无效的参数,并希望看到我在命令行上看到的内容:“无法识别的选项:-foo = bar” 在进一步测试时,看起来jvm正在将我想要的消息放入stdout或stderr。 我相信我需要捕获stdout和stderr来获取我正在寻找的错误(除非当然有一种更简单的方法)。 我正在使用C ++进行编码,因此如果有人能够展示将错误捕获到字符串流中的方法,那将是理想的。 谢谢,兰迪

JVM ARGS’-Xms1024m -Xmx2048m’在Java 8中仍然有用吗?

我有一个使用JVM ARGS的Java 7应用程序: -Xms1024m -Xmx2048m ,它运行得很好。 升级到Java 8后,它以exception方式运行在错误状态: Exception in thread “main” java.lang.OutOfMemoryError: GC overhead limit exceeded at org.hibernate.engine.StatefulPersistenceContext.addEntry(StatefulPersistenceContext.java:466) at org.hibernate.engine.TwoPhaseLoad.postHydrate(TwoPhaseLoad.java:80) at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1439) at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1332) at org.hibernate.loader.Loader.getRow(Loader.java:1230) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603) at org.hibernate.loader.Loader.doQuery(Loader.java:724) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) at org.hibernate.loader.Loader.doList(Loader.java:2228) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125) at org.hibernate.loader.Loader.list(Loader.java:2120) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1596) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306) 我想知道JVM ARGS -Xms1024m -Xmx2048m是否还在工作? 由于Java 8已经删除了Perm Generation: http : //www.infoq.com/articles/Java-PERMGEN-Removed […]

在eclipse中设置JVM参数的正确方法是什么

我正在使用eclipse 4.2来执行junit测试。 测试使用了大量的内存,所以我想做的是扩大分配给jvm的内存。 我想知道在eclipse ini文件中设置堆内存参数和运行配置之间是否存在差异?

我可以强制JVM本地编译给定的方法吗?

当我的应用程序启动时,我经常调用一个性能关键的方法。 最终,它被JIT编译,但是在解释器中运行了一些明显的时间之后。 有没有什么办法可以告诉JVM我想从一开始就编译这个方法(没有用-XX:CompileThreshold类的东西调整其他内部-XX:CompileThreshold )?

针对大型应用程序的JVM性能调优

默认JVM参数不是运行大型应用程序的最佳选择。 来自在真实应用程序上进行调整的人的任何见解都会有所帮助。 我们在32位Windows机器上运行应用程序,默认使用客户机JVM。 我们添加了-server并将NewRatio更改为1:3(更大的年轻一代)。 您尝试过并发现有用的任何其他参数/​​调整? [更新]我正在谈论的特定类型的应用程序是一个很少关闭的服务器应用程序,至少需要-Xmx1024m。 还假设已经分析了应用程序。 我正在寻找仅在JVM性能方面的一般指导原则。

java应用程序可以分配比jvm启动参数指定的内存更多的内存吗?

假设java应用程序没有使用任何本机库。 有没有办法可以分配比jvm启动参数指定的内存更多的内存? 反过来问:我可以依赖java应用程序永远不会分配比JVM启动参数限制更多的内存吗?

为什么JVM允许为IntegerCache设置“高”值,而不是“低”?

我们都知道Java有一个Integer (和其他一些类型)的缓存,其数量在[-128, 127]范围内,被认为是“常用”。 缓存的设计如下: private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be configured by property int h = 127; String integerCacheHighPropValue = sun.misc.VM.getSavedProperty(“java.lang.Integer.IntegerCache.high”); if (integerCacheHighPropValue != null) { try { int i = parseInt(integerCacheHighPropValue); i = Math.max(i, […]

Ghost4J。 java.lang.UnsatisfiedLinkError:无法加载库’gsdll64′

我使用Maven将Ghost4J 0.45包含到我的项目中,并将Ghostscript安装到C:\Program Files\gs\gs9.06 。 但我仍然得到一个错误java.lang.UnsatisfiedLinkError: Unable to load library ‘gsdll64′ 。 我添加到位于’gsdll64.dll’的PATH env变量目录中(即C:\Program Files\gs\gs9.06 )。 还尝试使用-Djava.library.path=/path/to/dir启动应用程序。 但是我经常得到UnsatisfiedLinkError (但是当我使用JVM参数-Djava.library.path启动时,我得到了ClassNotFoundexception(Eclipse无法找到Main类,但是当我使用我的应用程序时,我手动将Eclipse指向Main类))/