草庐IT

java - 如何改进应用程序以避免堆空间问题

我有一个应用程序,它大量使用许多自定义对象,这些对象是在方法内部创建的,在方法之外从不需要。整个结构(在我看来)是非常好的面向对象的,并使用服务、实用程序和DI模型。现在,当我运行第一个“大型”测试时,我很快遇到了OutOfMemoryExceptions。现在,我不只是想增加堆空间并完成它,因为我可以想象这不会解决问题,而是延迟它直到我的应用程序增长更多并遇到同样的问题。我正在寻找一些简单且易于实现的解决方案、技巧和片段,以帮助应用程序处理垃圾收集和堆空间,尤其是当涉及到许多与对象创建相关的循环时。诸如“不要在循环中创建对象,在循环之前创建它们并在循环中覆盖它”之类的东西。

java - 如何避免此 java.io.IOException : No space left on device

如果我的空间已满,我有时会遇到以下异常java.io.IOException:Nospaceleftondeviceatjava.io.FileOutputStream.writeBytes(NativeMethod)atjava.io.FileOutputStream.write(FileOutputStream.java:282)atjava.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1847)atjava.io.ObjectOutputStream$BlockDataOutp

java - 我应该尽量避免使用静态同步方法吗

据我了解,以下代码效率不高:classFoo{staticResourceresource1;staticResourceresource2;staticsynchronizedvoidmethodA(){resource1.add("abc");}staticsynchronizedvoidmethodB(){resource2.add("abc");}}据我所知,这两种方法都锁定在单个对象(类对象Foo.class)中,所以我猜以下是一个很好的优化?classFoo{staticResourceresource1;staticResourceresource2;staticvoid

java - 如何避免 java.lang.NoClassDefFoundError

我有一个用于将文本添加到现有.doc文件的代码,它会使用apachePOI将其另存为另一个名称。以下是我目前试过的代码importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.InputStream;importorg.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;importorg.apache.poi.xwpf.usermodel.XWPFDocument;importorg.apache.poi.xwpf.u

java - 如何避免在 Java 中有很多 try catch block

我对java和trycatchblock处理异常的想法还很陌生。这大致就是我要结束的,而且必须有更好的方法:try{JSONObjectjsonObject=newJSONObject(jsonString);intaCount=jsonObject.getInt("acount");StringdevTok=jsonObject.getString("dt");StringqURL=jsonObject.getString("qu");try{DatastoreServicedatastore=DatastoreServiceFactory.getDatastoreService()

c# - C#、Java 等语言如何避免类似 C/C++ 的独立编译?

对于我的编程语言课,我正在写一篇关于语言设计史上一些重要人物的论文的研究论文。CARHoare的一篇文章让我觉得很奇怪,因为它反对在C甚至C流行之前C和后来的C++中使用的独立编译技术。既然这主要是为了加快编译时间的优化,那么Java和C#是什么使它们能够避免依赖独立编译?它是一种编译器技术还是语言中有促进这一点的元素?在它们之前是否还有其他编译语言使用过这些技术? 最佳答案 简短回答:Java和C#不会避免单独编译;他们充分利用了它。它们的不同之处在于,它们不需要程序员在编写可重用库时编写一对单独的头文件/实现文件。用户编写一个类

java - 初始化 WeakReference 对象以避免空检查

给出下面的示例代码是否有初始化total的方法这样我以后使用它时就不必进行空检查。我无法将值传递给构造函数。publicclassSampleCode{privateWeakReferencetotal;publicSampleCode(){}publicvoidsetWidget(Floattotal){this.total=newWeakReference(total);}publicfloatcalculatePercentage(Floatcount){if(total==null){return-1;}if(total.get()==null){return-1;}retur

Java - 避免静态函数的 switch 语句

检查这段代码-switch(kind){case"green":GreenKind.doSomething();//Staticfunctionbreak;case"white":WhiteKind.doSomething();//Staticfunctionbreak;case"blue":BlueKind.doSomething();//Staticfunctionbreak;case"yellow":YellowKind.doSomething();//Staticfunctionbreak;}有办法避免switch语句吗?因为它闻起来很糟糕。也许是这样的?-kinds.get(

java - 当 WAR 的大小为 41M 时,如何避免在 WAR 中复制 40M 的 java 库?

目前我的构建过程包括在WEB-INF/lib下使用所有必需的java库重新打包war文件,然后将war文件复制到开发/演示/生产服务器以由tomcat重新部署。打包后的war文件大小约为41M,目前有大约40M的外部java库。一定有更好的方法。你是如何解决这个问题的?我的开发机器是一个Windows盒子,Eclipse作为我的IDE,Ant作为我的构建工具。服务器都是装有Tomcat5.5的linux机器。我是否应该将jar文件添加到服务器端的war包中? 最佳答案 我明白你在说什么,并且对我们的一些网络应用程序也有同样的挫败感,

java - Java 中的泛型是否避免了所有 ClassCastExceptins?

由于Java5仅在编译时检查泛型,它们能否完全避免ClassCastExceptions情况? 最佳答案 Java5泛型提供的“铸铁”保证是您永远不会从编译器插入的强制转换中看到ClassCastException,提供编译不会产生“未经检查”的警告。在现实生活中,如果您的代码使用遗留(非泛化)库,您通常无法避免未经检查的警告。然后编译器生成的转换可以抛出ClassCastException,您的工作是通过确保库代码返回的值的类型符合您的声明来防止这种情况发生。否则情况不变。在泛型之外,如果您转换为不兼容的类型,您将像往常一样获得C