我想创建一些不同大小(100kb-500kb)的测试java文件。在那种情况下,我正在修改简单的hello世界。
程序永远不会被执行所以在类中创建对象不会被调用。
我想创建一些像C / C ++语言一样的常量,这些常量将保存在文件中,而不是保存在运行时内存中
我正在使用midlet库,不知怎的,我无法在类外创建静态/最终变量。
package HelloWorld;
import javax.microedition.midlet.*;
//cant create consts here?
public class HelloWorld extends MIDlet {
public HelloWorld() {
System.out.println("Constructor");
}
public void startApp() throws MIDletStateChangeException {
System.out.println("startApp");
System.out.println("\nHello World\n");
destroyApp(true);
}
public void pauseApp() {
System.out.println("pauseApp()");
}
public void destroyApp(boolean cond) {
System.out.println("destroyApp(" + cond + ")");
notifyDestroyed();
}
//public String[][][] toppings = new String[200000][200000][20000];
}
什么是增加java构建输出文件大小的简单有效方法?输出格式为.jrc
答案 0 :(得分:1)
我假设您首先要谈的是“.class”文件的大小。
HellWorld类构造函数中的那个多向量的初始化会做到吗?
实际上,没有。该初始化实际上是由单个字节码指令执行的。不管阵列的大小。您可以通过向数组添加维度来使“.class”更大,但不足以生成大型“.class”文件。
程序启动后是否调用了它?
是的它是......但这不会影响类文件的大小。
现在,如果你在讨论运行程序所需的内存量,那么的数组会占用大量内存:
String[][][]
数组,第一维有200,000个元素String[][]
个数组,第二维有200,000个元素String[]
个数组,第三维包含20,000个元素。这是一个巨大的记忆。但内存仅在运行时分配。如此多的内存使您的程序无法在典型的笔记本电脑/台式机上运行。
(这让我觉得这不是你要问的!)
正如我所说,“。class”文件很小,因为使用单个字节码指令执行分配...有3个操作数:每个维度一个。
什么是增加java构建输出文件大小的简单有效方法?
包含大量方法或构造函数的类。
具有许多不同文字字符串的类(最好是大字)。
但是,请注意,类文件格式对这些内容施加了一些限制;见https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.11
我正在使用midlet库,不知怎的,我无法在类外创建静态/最终变量。
那是因为Java不允许它。必须在类(或接口)内声明所有变量。 Java在许多方面与C / C ++不同,这只是其中之一。
我建议您花点时间阅读Java教程或教科书,而不是根据C和C ++知识猜测语言是如何工作的。
答案 1 :(得分:0)
你所做的就是声明一个数组,你没有分配任何值,所以你仍然在写一个“null”。
查看Arrays.fill()文档。还可以尝试提出一个问题,其中包含一些可以使用的解决方案的代码,因为这有点模糊,而且你也误解了creating objects在java中是如何工作的。