小编Ale*_*rov的帖子

Java:OutOfMemoryError异常和freeMemory()

我有以下测试程序:

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()?

java memory exception out-of-memory

6
推荐指数
2
解决办法
1372
查看次数

如何加速Scala IDE?

我正在处理一个由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: Java VisualVM输出

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)

eclipse scala scala-ide

6
推荐指数
1
解决办法
4376
查看次数

JavaFX:关闭字体平滑

(有几个类似的问题,但没有答案)

我开始尝试 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 javafx cleartype font-smoothing

6
推荐指数
0
解决办法
470
查看次数

JPasswordField.getPassword() 的安全原因是什么?

自 Java 1.2 以来,JPasswordField.getText()“出于安全原因”已被弃用,鼓励使用getPassword()“为了更安全”的方法。

但是,JPasswordField通过分析堆转储 ( JPasswordField instance -> model -> s -> array) ,我至少能够获得存储在 Oracle JRE 1.7 中的密码。

那么如何JPasswordField.getPassword()帮助保护密码呢?

java security passwords swing jpasswordfield

5
推荐指数
1
解决办法
1353
查看次数

Scala类型类隐式解析

(斯卡拉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)

关于这段代码,我有很多问题:

  1. 为什么不IntTC首先解决?
  2. 为什么它在使用一次后编译?(如果您注释掉第一次调用,代码可以正常工作) …

scala implicit typeclass

5
推荐指数
1
解决办法
66
查看次数

如何绘制可变宽度的UIBezierPath?

我想知道如何绘制一条uibezier路径,其中笔划宽度在弧的中心处达到峰值.这是我的意思的一个例子:

曲线

我必须在绘图时浏览每个点,并相应地设置笔划宽度,或者有一种更简单的方法.谁能指出我正确的方向?

谢谢

iphone graphics quartz-graphics ios uibezierpath

4
推荐指数
1
解决办法
1470
查看次数

这个正则表达式有什么问题?

我在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的速度?

java regex

3
推荐指数
1
解决办法
215
查看次数

Scala 类型推断和多参数列表

(斯卡拉 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),错误就会消失。

为什么多个参数列表的存在会混淆类型检查器?这是一个错误,还是预期的结果?

scala type-inference typechecking

3
推荐指数
1
解决办法
163
查看次数

奇怪的Java编译器警告:错误的"潜在的空访问警告"

(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或为什么编译器这么认为?

java nullpointerexception compiler-warnings

2
推荐指数
1
解决办法
1322
查看次数

Java Inter进程通信

美好的一天每个人,我有一个程序(让我们称之为'A'),这是从ANT脚本调用的java.这个程序使用Runtime.getRunTime.exec("batFile.bat").该.bat文件又调用另一个java文件(让我们称之为'B').现在,问题来了.

有没有办法让B可以访问A的实例变量?

java ant

2
推荐指数
2
解决办法
315
查看次数