相关疑难解决方法(0)

在JDK 8中消除PermGen

我已经安装了JDK 8并尝试运行Eclipse.我收到以下警告信息:

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0 
Run Code Online (Sandbox Code Playgroud)

忽视这个论点的原因是什么?

java jvm permgen java-8

220
推荐指数
6
解决办法
17万
查看次数

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

PermGen和Heap,差异及其意义

朋友们,

你能否告诉我Heap和PermGen的意义,差异和用途.同样知道分别在其中加载了哪个类也是一件好事.

与Java VM规范相关的解释将非常有用

谢谢Punith

java memory jvm heap-memory

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

12GB RAM 机器出现 Pentaho OutOfMemory 异常

我刚刚在公司实现了Pentaho,并将其内存设置为12GB。当我们尝试将 1600 万行从一个表加载到另一个表时,内存不足。

我以为 Pentaho 在数据库上执行提交时会清除内存,但似乎并没有发生。当加载大约 250 万行时会抛出此异常,这意味着加载 1600 万行我需要一台 73Gb RAM 的机器?(当然是粗略的数学)

是否有任何参数或配置可以让奇迹发生?这个内存问题限制了我们的加载能力(1600万只是其中一张表)。不敢相信 Pentaho 会在不清除缓存的情况下将内存烧坏。

我的文件 D:\Pentaho\server\biserver-ee\tomcat\bin\service.bat 有以下行:

"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;
-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties;
-XX:MaxPermSize=256m" --JvmMs 2048 --JvmMx 12288
Run Code Online (Sandbox Code Playgroud)

和下面这行有什么关系吗?

-XX:MaxPermSize=256m
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释一下它到底是什么吗?

提前致谢!

PS:这是我第一次接触 Pentaho,因此,对于任何不必要的问题或假设,我深表歉意。

java pentaho out-of-memory

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

这个设计模式有名字吗?(具有仅调用构造函数的实现的基类)

编辑:我意识到这种模式感觉很像currying,这是一种功能程序员在调用之前用来指定函数参数的技术.这里的区别在于我们在对象上讨论构造函数而不是简单地使用函数.


在整个几个项目中,我发现自己使用了这个奇怪的设计模式,我找不到它的名字.它有名字吗?也许这只是不好的做法,你告诉我.

设计模式

有了这种模式,你会......

  1. 没有抽象方法的抽象基类(我们稍后可以讨论).
  2. 基类的许多"实现".但是,这些实现仅用于调用基类的构造函数.

Java示例(假设场景)

我将定义一个假设的场景来提供一些上下文.

场景:

Bob正在编写一个用于扫描源代码的小API.他希望能够检查注释是否在源代码中的给定索引处开始/结束.

这是鲍勃的代码.

1.抽象基类

public abstract class CommentDetector {

    private final String startPattern;
    private final String endPattern;

    protected CommentDetector(String startPattern, String endPattern) {
        this.startPattern = startPattern;
        this.endPattern = endPattern;
    }

    public boolean commentStartsAt(int index, String sourceCode) {
        // ...
    }

    public boolean commentEndsAt(int index, String sourceCode) {
        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)

您可能想知道为什么它是抽象的但没有抽象方法.这只是因为Bob 不希望您直接实例化它.Bob希望你编写一个实现,CommentDetector然后实例化.以下是Bob的两个实现......

2.一些实施

一个用于Java中的多行注释: …

java oop inheritance design-patterns nomenclature

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