我已经安装了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)
忽视这个论点的原因是什么?
朋友们,
你能否告诉我Heap和PermGen的意义,差异和用途.同样知道分别在其中加载了哪个类也是一件好事.
与Java VM规范相关的解释将非常有用
谢谢Punith
我刚刚在公司实现了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,因此,对于任何不必要的问题或假设,我深表歉意。
编辑:我意识到这种模式感觉很像currying,这是一种功能程序员在调用之前用来指定函数参数的技术.这里的区别在于我们在对象上讨论构造函数而不是简单地使用函数.
在整个几个项目中,我发现自己使用了这个奇怪的设计模式,我找不到它的名字.它有名字吗?也许这只是不好的做法,你告诉我.
有了这种模式,你会......
我将定义一个假设的场景来提供一些上下文.
Bob正在编写一个用于扫描源代码的小API.他希望能够检查注释是否在源代码中的给定索引处开始/结束.
这是鲍勃的代码.
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的两个实现......
一个用于Java中的多行注释: …
java ×5
jvm ×3
permgen ×2
heap-memory ×1
inheritance ×1
java-8 ×1
memory ×1
nomenclature ×1
oop ×1
pentaho ×1