正如您在下面的屏幕截图中看到的那样,eclipse和Android SDK Manager(以及其他Java程序)正在尝试通过IPv6 TCP/IP堆栈连接到IPv4 Internet IP,而Proxifier(代理管理器程序,永不服务)无法支持.


我如何在Java中禁用IPv6?
Java 1.7在从操作系统获取默认语言环境的方式上发生了变化.有一些方法可以恢复旧行为,例如在启动JVM实例时设置标志-Dsun.locale.formatasdefault = true.
我想永久设置这个标志,这样我每次启动JVM实例时都不必在命令行参数中指定它.是否有文件或任何其他可能更改JVM的默认设置?像Eclipse.ini文件,但JVM本身?
我正在查看运行Alfresco的JVM配置选项,主要是Alfresco Wiki上的这个文档.其中一个建议是使用JVM标志和.这样做的理由是:-Xcomp-Xbatch
如果您希望Hotspot预编译类,可以添加[-Xcomp和-Xbatch].但是,这将显着增加服务器启动时间,但会突出显示以后可能遇到的缺失依赖项.
从我在其他地方读到的关于-Xcomp和-Xbatch旗帜的内容,我想知道它们是否确实提供了任何好处.
-Xcomp 获得HotSpot以预先编译所有代码并进行最大程度的优化,从而推导出VM将通过系统的标准运行获得的任何分析.-Xbatch停止后台编译,这意味着在编译完成之前导致代码被编译的线程.但是,在编译完成后,先前阻塞的线程将不会运行已编译的代码,它仍将运行解释的代码.这是Java 6(Mustang)的一个变化 - 在Mustang之前,由于-Xbatch标志的存在而被阻止编译的线程一旦编译完成就保证在编译的代码中运行.因此,我猜测-Xbatch标志的推荐是在较旧的VM上运行Alfresco的遗留物.有人有想法吗?我倾向于摆脱这两面旗帜并依靠虚拟机来解决问题.
我想添加两件事,首先是我还没有访问Alfresco实例来测试这个,其次我不知道什么样的机器托管Alfresco而不是通过查看其他配置选项它必须是64位VM.尽管如此,我希望社区将有一些有用的输入,可能来自一般的HotSpot调整观点.
默认JVM参数不是运行大型应用程序的最佳选择.来自在真实应用程序上进行调整的人的任何见解都会有所帮助.我们在32位Windows机器上运行应用程序,默认情况下使用客户机JVM .我们添加了-server并将NewRatio更改为1:3(更大的年轻一代).
您尝试过并发现有用的任何其他参数/调整?
[更新]我正在谈论的特定类型的应用程序是一个很少关闭的服务器应用程序,至少需要-Xmx1024m.还假设已经分析了应用程序.我正在寻找仅在JVM性能方面的一般准则.
当我的应用启动时,我经常调用一个性能关键的方法.最终,它被JIT编译,但是在解释器中运行了一些明显的时间之后.
有什么办法我可以告诉JVM我想从一开始就编译这个方法(没有调整其他内部的东西-XX:CompileThreshold)?
XX的默认值是什么:MaxDirectMemorySize?
我有一个使用JVM ARGS的Java 7应用程序:-Xms1024m -Xmx2048m它运行得很好.
升级到Java 8后,它以错误状态运行,并显示异常:
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)
Run Code Online (Sandbox Code Playgroud)
我想知道JVM ARGS -Xms1024m -Xmx2048m是否还在工作?
由于Java 8已经删除了Perm Generation:http://www.infoq.com/articles/Java-PERMGEN-Removed,我认为Java 7和Java 8之间的不同GC策略/内存管理可能是根本原因.有什么建议吗?
我怎样才能指出java.library.patheclipse项目中的两个不同- 运行配置?我需要这两个库:
-Djava.library.path=/opt/hdf-java/build/bin
-Djava.library.path=/opt/opencv-2.4.10/build/lib
Run Code Online (Sandbox Code Playgroud)
问候.
java java-native-interface jvm jvm-arguments java.library.path
我对GC算法有一些疑问:首先,当我们使用UseSerialGC,UseParallelGC,UseParallelOldGC等参数时,我们指定一个GC算法.他们每个人都可以在所有一代做GC,是不是?
例如,如果我使用"java -XX:+ UseSerialGC",则所有代都将使用串行GC作为GC算法.
第二,我可以在Old Gneneration中使用ParallelGC并在yong一代中使用SerialGC吗?
最后作为标题ParallelGC和ParallelOldGC之间的区别是什么?
可以-Xmx在32位系统中设置的理论最大堆值当然是2^32字节,但通常(请参阅:了解最大JVM堆大小 - 32位对64位),不能使用全部4GB.
对于在64位计算机上运行64位操作系统的64位JVM,除了理论上的2^64字节限制或16艾字节外,还有其他限制吗?
我知道由于各种原因(主要是垃圾收集),过大的堆可能不明智,但鉴于阅读有关TB的TB的服务器,我想知道什么是可能的.
java ×10
jvm-arguments ×10
jvm ×8
jvm-hotspot ×2
performance ×2
64-bit ×1
heap-memory ×1
ipv6 ×1
java-8 ×1
jit ×1