Java 7已经出现了一段时间了,但是在垃圾收集器 ,特别是新的G1收集器的configuration方面我找不到任何好的资源。 我的问题: G1是Java 7中的默认收集器,如果不是,我该如何激活G1? g1在Java7中有什么可选的设置? Java 7中的其他收集器(如cms或并行收集器)是否有任何更改? 我在哪里可以find关于在Java 7垃圾收集良好的文档?
在Debian中通过apt-get存储库安装Oracle Java 7似乎不起作用。 apt-get install oracle-java7-installer 看起来像apt-get不能识别oracle-java7-installer 。
有没有一个API来获得一个类path资源(例如,我从Class.getResource(String) )作为一个java.nio.file.Path ? 理想情况下,我想用classpath资源来使用新奇的Path API。
由于Java 7将会默认使用新的G1垃圾回收function,因此Java能够处理大一个数量级的堆而不会造成“破坏性”的GC暂停时间? 有没有人在生产中实际使用G1,你有什么经验? 公平地说,我看到真正长时间的GC暂停是非常大的,比工作站要多得多。 澄清我的问题; G1会打开数百GB的网关吗? TB?
我想使用这个链接中提到的WatchService API: http : //download.oracle.com/javase/tutorial/essential/io/notification.html 经过阅读后,我发现WatchService是计划用于JDK 7的NIO类的一部分。因此,它是beta版本。 没关系。 http://jdk7.java.net/download.html有我下载和提取的JDK。 我有一堆文件夹。 我不知道该怎么办 然后,我再读一遍,发现一些很好的人创build了JDK 7作为一个二进制文件,所以像我这样的人可以很容易地安装它。 它被称为Open JDK: http : //code.google.com/p/openjdk-osx-build/ 所以,我下载了.dmg文件并安装它。 然后我打开“Java偏好”,看看OpenJDK7是可用的。 所以,现在我觉得我可以开始尝试WatchService API了。 从第一个链接的教程中,作者给了一个.java文件来先testing它,并确保它正在运行。 以下是该文件的链接: http : //download.oracle.com/javase/tutorial/essential/io/examples/WatchDir.java 所以,我启动Eclipse(实际上我使用STS)并创build一个新的Java项目,并在“使用执行环境JRE:”中selectJaveSE-1.7。 在src文件夹下,我复制粘贴WatchDir.java文件。 而且我仍然看到很多弯曲的红线。 所有的“import.java.nio。*”都是红色的,我不能运行它作为一个Java应用程序。 我需要做什么? 编辑:我其实没有追求使用Java 7,但有很多的兴趣,似乎人们不断回答这个问题。 我应该怎样做才能使它与search它的人更相关? 让我知道通过PMing我。
我已经注意到在Java SE 6和Java SE 7之间的自动拆箱行为有所不同。我想知道为什么,因为在这两个版本之间我找不到任何有关此行为更改的文档。 这是一个简单的例子: Object[] objs = new Object[2]; objs[0] = new Integer(5); int myInt = (int)objs[0]; 这个编译良好的javac从Java SE 7.但是,如果我给编译器“-source 1.6”参数,我在最后一行得到一个错误: inconvertible types found : java.lang.Object required: int 我尝试下载Java SE 6以使用本机版本6编译器进行编译(不带任何-source选项)。 它同意并给出与上述相同的错误。 那么给了什么? 从一些更多的实验看来,Java 6中的拆箱似乎只能清除(在编译时)是盒装types的值。 例如,这两个版本的作品: Integer[] objs = new Integer[2]; objs[0] = new Integer(5); int myInt = (int)objs[0]; 所以看起来,在Java 6和7之间,拆箱function得到了增强,因此它可以一次性投射和取消投放对象types,而不知道(在编译时)该值是否是适当的盒装types。 但是,阅读Java语言规范或Java 7发布时撰写的博客post,我看不出有什么变化,所以我想知道这个变化是什么,这个“特性”叫做什么? […]
Oracle在4月26日发布了针对Mac OS X的Java JDK 7。我遵循了安装说明,当我在terminal窗口中执行java -version时,我得到: java version "1.7.0_04" Java(TM) SE Runtime Environment (build 1.7.0_04-b21) Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode) 但是当我在terminal窗口中执行mvn -version ,我得到: Apache Maven 3.0.2 (r1056850; 2011-01-08 18:58:10-0600) Java version: 1.6.0_31, vendor: Apple Inc. Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home Default locale: en_US, platform encoding: MacRoman OS name: "mac os x", version: "10.7.3", […]
我看过类似的问题,但还没有find答案。 使用maven编译,我得到: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project api: Fatal error compiling: invalid target release: 1.7 -> [Help 1] 这是pom.xml: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.0</version> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> </configuration> </plugin> Javac版本: javac 1.7.0_25 Java版本: java version "1.7.0_25" Java(TM) SE Runtime Environment (build 1.7.0_25-b15) Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode) […]
我最近遇到了java @SafeVarargs注释。 在Java中使用可变参数函数的不安全让我相当困惑(堆中毒擦除types?),所以我想知道一些事情: 是什么使得可变的Java函数在@SafeVarargs意义上是不安全的(最好以深入的例子的forms来解释)? 为什么这个注释留给程序员呢? 这不是编译器应该能够检查的东西吗? 是否有一些标准必须坚持,以确保他的function确实是安全的? 如果没有,最好的做法是什么来确保它?
根据JLS,一个int数组在初始化之后应该被零填充。 但是,我面临的情况并非如此。 这种行为首先发生在JDK 7u4中,并且也出现在以后的所有更新(我使用64位实现)中。 以下代码引发exception: public static void main(String[] args) { int[] a; int n = 0; for (int i = 0; i < 100000000; ++i) { a = new int[10]; for (int f : a) if (f != 0) throw new RuntimeException("Array just after allocation: "+ Arrays.toString(a)); Arrays.fill(a, 0); for (int j = 0; […]