我有以下测试程序:
public static void main(String[] args)
{
HashMap<Integer, String> hm = new HashMap<Integer,String>();
int i = 1;
while(true)
{
hm.put(i, "blah");
i++;
System.out.println("############");
System.out.println("Max mem: " + Runtime.getRuntime().maxMemory());
System.out.println("Total mem: " + Runtime.getRuntime().totalMemory());
System.out.println("Free mem:" + Runtime.getRuntime().freeMemory());
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行这个程序,我得到以下输出:
...
############
Max mem: 8060928
Total mem: 8060928
Free mem:334400
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap.addEntry(Unknown Source)
at java.util.HashMap.put(Unknown Source)
at Test.main(Test.java:14)
Run Code Online (Sandbox Code Playgroud)
为什么我得到一个"OutOfMemoryError"异常,虽然freeMemory()方法返回有更多的空闲内存??? 如果有办法使用所有freeMemory()?
我正在处理一个由SBT管理的相当大的项目(完全重新编译时间超过150秒).我正在使用最新的Scala IDE插件(4.0.0-M1),我几乎无法编辑任何足够大的源文件 - 每次输入内容时,eclipse会完全冻结几秒钟.保存更改时也会发生同样的情况.编辑文件似乎也会导致越来越多的性能降低.重启Eclipse会有所帮助,但不会长久.为了解决这个问题,我必须通过Eclipse在文本编辑器中打开一个.scala源文件,失去了Scala编辑器的所有好处.
PC足够好 - 英特尔酷睿i5-3570具有16 GB RAM
我使用的是Windows 7 x64,Scala 2.10.3,SBT 0.13.1和Oracle JDK 1.7.0u45
使用Java VisualVM进行分析表明Scala演示编译器使用了显然的CPU:

Eclipse的堆状态指示器永远不会超过一半.
自动构建,隐含突出显示和标记出现都被关闭
配置来自eclipse.ini(http://scala-ide.org/docs/current-user-doc/advancedsetup/index.html中添加的3个最后标志):
-vm
D:\ProgramFiles\Java\jdk1.7.0_45\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.6
-Xms1024m
-Xmx2048m
-Xss1M
-XX:MaxPermSize=1024M
-server
-XX:+DoEscapeAnalysis
-XX:+UseConcMarkSweepGC
-XX:+UseCompressedOops
Run Code Online (Sandbox Code Playgroud) (有几个类似的问题,但没有答案)
我开始尝试 JavaFX (JDK8),我注意到的第一件事是可怕的字体平滑。我使用的是 Windows 8.1,在操作系统范围内禁用字体平滑/ClearType 是我做的第一件事。大多数应用程序都遵循这一点(两个值得注意的例外是 IE 和 Metro UI 内容),但 JavaFX 似乎强制这样做。
下面的屏幕截图说明了它 - Eclipse IDE 中的代码片段和生成的 JavaFX 窗口(代码使用 Scala,但非常可读)。它们都使用相同的字体,因此差异很明显。
正如你所看到的,我尝试设置
System.setProperty("prism.lcdtext", "false")
System.setProperty("prism.subpixeltext", "false")
Run Code Online (Sandbox Code Playgroud)
但它们似乎没有任何影响。
关于这个问题有什么提示或见解吗?
自 Java 1.2 以来,JPasswordField.getText()“出于安全原因”已被弃用,鼓励使用getPassword()“为了更安全”的方法。
但是,JPasswordField通过分析堆转储 ( JPasswordField instance -> model -> s -> array) ,我至少能够获得存储在 Oracle JRE 1.7 中的密码。
那么如何JPasswordField.getPassword()帮助保护密码呢?
(斯卡拉2.11.8)
请考虑以下代码:
object ScalaTest extends App {
class Wrapper {
import Wrapper._
def init(): Unit = {
// "could not find implicit value for parameter tc: ScalaTest.Wrapper.TC[Int]"
printWithTC(123)
// Compiles
printWithTC(123)(IntTC)
// Compiles again!
printWithTC(132)
}
}
object Wrapper {
trait TC[A] {
def text(a: A): String
}
implicit object IntTC extends TC[Int] {
override def text(a: Int) = s"int($a)"
}
def printWithTC[A](a: A)(implicit tc: TC[A]): Unit = {
println(tc.text(a))
}
}
(new Wrapper).init()
}
Run Code Online (Sandbox Code Playgroud)
关于这段代码,我有很多问题:
IntTC首先解决?我想知道如何绘制一条uibezier路径,其中笔划宽度在弧的中心处达到峰值.这是我的意思的一个例子:

我必须在绘图时浏览每个点,并相应地设置笔划宽度,或者有一种更简单的方法.谁能指出我正确的方向?
谢谢
我在Java上尝试以下代码:
String test = "http://asda.aasd.sd.google.com/asdasdawrqwfqwfqwfqwf";
String regex = "[http://]{0,1}([a-zA-Z]*.)*\\.google\\.com/[-a-zA-Z/_.?&=]*";
System.out.println(test.matches(regex));
Run Code Online (Sandbox Code Playgroud)
它确实工作了几分钟(之后我杀了VM)没有结果.谁能帮我?
顺便说一句:您将来会建议我如何加快weblink-testng regex的速度?
(斯卡拉 2.11.8)
考虑以下代码:
trait Class[A] {
def f1[B >: A](arg1: Int)(ord: Ordering[B]): Int
def f2[B >: A](arg1: Int, ord: Ordering[B]): Int
def f[B >: A](ord: Ordering[B]): Int = {
f1(123)(ord) // Compilation error!
f2(123, ord) // OK
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,线f1(123)(ord)上升type mismatch; found : Ordering[B] required: Ordering[A] Note: B >: A, but trait Ordering is invariant in type T. You may wish to investigate a wildcard type such as _ >: A. (SLS 3.2.10)
如果我们将调用更改为f1[B](123)(ord),错误就会消失。
为什么多个参数列表的存在会混淆类型检查器?这是一个错误,还是预期的结果?
(JDK 1.6.0_23,Eclipse 3.7.0,"潜在空指针访问"警告级别为"警告")请考虑以下示例代码:
Object obj = null;
for (;;) {
obj = getObject();
if (obj != null) break;
Thread.sleep(25);
}
obj.toString();
Run Code Online (Sandbox Code Playgroud)
我在最后一行收到以下警告:Potential null pointer access: The variable obj may be null at this location.有没有真正的方法obj可以实际成为null或为什么编译器这么认为?
美好的一天每个人,我有一个程序(让我们称之为'A'),这是从ANT脚本调用的java.这个程序使用Runtime.getRunTime.exec("batFile.bat").该.bat文件又调用另一个java文件(让我们称之为'B').现在,问题来了.
有没有办法让B可以访问A的实例变量?