我说,我使用了一个包含大量数据的变量String data.我想以下列方式使用此字符串的一小部分:
this.smallpart = data.substring(12,18);
Run Code Online (Sandbox Code Playgroud)
经过几个小时的调试(使用内存可视化器)后,我发现对象字段smallpart记住了所有数据data,尽管它只包含子字符串.
当我将代码更改为:
this.smallpart = data.substring(12,18)+"";
Run Code Online (Sandbox Code Playgroud)
..问题解决了!现在我的应用程序现在使用很少的内存!
怎么可能?有谁能解释一下?我认为这个小部分一直在引用数据,但为什么呢?
更新: 如何清除大字符串呢?data = new String(data.substring(0,100))会做什么吗?
如何在Java中过滤数组?
我有一系列对象,例如汽车:
类:
public class Car{
public int doors;
public Car(int d){
this.doors = d;
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
Car [] cars = new Cars[4];
cars[0] = new Car(3);
cars[1] = new Car(2);
cars[2] = new Car(4);
cars[3] = new Car(6);
Run Code Online (Sandbox Code Playgroud)
现在我想过滤汽车阵列,只保留4门以上:
for(int i = 0; i<cars.length; i++){
if(cars[i].doors > 4)
//add cars[i] to a new array
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
在我用Vector做之前:
Vector subset = new Vector();
for(int i = 0; i<cars.length; i++){
if(cars[i].doors > 4)
//add cars[i] to a new array …Run Code Online (Sandbox Code Playgroud) 我在Eclipse(java me midlets)中有不同的项目,它们都需要共享代码.目前我重复了一些事情,但这并不理想.做这个的最好方式是什么?谢谢!
编辑:我试图在构建路径中添加另一个项目,但是,当在模拟器中运行Midlet时,我得到以下错误:
未捕获的异常java/lang/NoClassDefFoundError:clientlibrary/ov9292/Ov9292Client.
线程通常以两种方式设计(参见java教程):通过扩展Thread类或通过实现Runnable类.无论哪种方式,您都需要指定在线程内运行的内容.
我设计了一个类,一个适用于在线资源的适配器,可以检索不同类型的信息.该类由getInformationOfTypeA()和getInformationOfTypeB()等方法组成.两者都包含连接到在线资源的代码,因此两者都需要进行线程化以避免死锁.
问题是:我该如何设计?我可以像下面这样做,但后来我只能实现一个方法:
public class OnlineResourceAdapter implements Runnable {
public void run() {
//get stuff from resource
getInformationOfTypeA();
}
public static void main(String args[]) {
(new Thread(new OnlineResourceAdapter ())).start();
}
public void getInformationOfTypeA(){
//get information of type A
}
public void getInformationOfTypeB(){
//get information of type B
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是为每个方法创建单独的类,但这对我来说似乎不自然.
顺便说一句:我正在j2me中开发我的应用程序
更新:
感谢您的回复,我认为最适合使用以下方法作为方法:
你觉得这怎么样:
public class OnlineResourceAdapter{
public void getInformationOfTypeA(){
Thread t = new Thread(new Runnable() {
public void run() {
//do stuff here
}
});
t.start();
} …Run Code Online (Sandbox Code Playgroud) 我怎样才能在堆栈跟踪中使用这些数字?这些是什么意思?在eclipse中,我经常会遇到异常,例如NullPointerException:
java.lang.NullPointerException
at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
at com.sun.midp.lcdui.AutomatedEventHandler.commandEvent(+47)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.handleVmEvent(+186)
Run Code Online (Sandbox Code Playgroud) 我有一个文件,我从中读取数据.此文件中的所有文本都存储在String变量(一个非常大的变量)中.然后在我的应用程序的另一部分,我想要遍历此字符串并逐步提取有用的信息(解析字符串).
与此同时,我的内存已满,OutOfMemory异常使我无法进一步处理.我认为在从文件中读取输入流时直接处理数据会更好.但是对于组织目标,我想将String传递给我的应用程序中的另一部分.
我该怎么办才能防止内存溢出?
当我使用终端发送电子邮件时,工作正常.我使用以下命令:
echo "Subject: test" | /usr/lib/sendmail -v you@domain.com
Run Code Online (Sandbox Code Playgroud)
但是当我在PHP中尝试这个时:
PHP文档:
<?php bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] ) ?>
Run Code Online (Sandbox Code Playgroud)
我的实施:
<?php mail("you@domain.com", "my topic", "my message contents", "From: me@domain.com"); ?>
Run Code Online (Sandbox Code Playgroud)
,那它不起作用.这是为什么?我想这与PHP的php.ini文件有关?
我配置的全部:
打开php.ini:
nano /etc/php5/apache2/php.ini
取消注释sendmail_path并写入:
sendmail_path = /usr/sbin/sendmail
取消注释sendmail_from并写入:
sendmail_from = me@domain.com
重启apache:
/etc/init.d/apache2 restart
可能是这样的?为了使这个更清楚:我希望PHP能够通过电子邮件发送!
编辑:
/usr/sbin/sendmail成/usr/lib/sendmail(或者反过来)似乎没有任何区别/usr/sbin/sendmail改为/usr/lib/sendmail(或反过来)似乎也没有任何区别Sendmail的日志文件:
root@machine:/var/log# cat mail.warn
root@machine:/var/log# cat mail.err …Run Code Online (Sandbox Code Playgroud) 我正在将Google日历与我的应用程序同步(我将事件存储在数据库中).更新事件后,我可以通过在"更新"订单上对事件订阅源进行排序,轻松找到上次更新.但是,如果删除/删除了某个活动,我该如何从Feed中跟踪此更新?
我在使用一些通用的OOP和Java方法时遇到了困难.有许多方法可以让类/对象相互通信.举个简单的例子:
那么Object A会自己检索P,Q和R(在动作X中),还是这些值必须是动作X的参数?
使用Python我可以通过键入来测试终端/命令行中的代码
python
python> print "hello world"
Run Code Online (Sandbox Code Playgroud)
我也想用PHP做这件事,但输入时:
php
echo "hello world";
Run Code Online (Sandbox Code Playgroud)
它不起作用..这可能吗?我该怎么办?在互联网上快速搜索会产生大量结果,这些结果可以调用实际的.php文件来运行.我只想在可能的情况下测试单个句子,而不创建文件和内容.
我在j2me中找不到关于HashMaps的文档.有任何人对此有经验吗?如何创建HashMap?
Map map1 = new HashMap();
应该工作吧?
java ×9
java-me ×3
string ×3
command-line ×2
eclipse ×2
memory ×2
php ×2
terminal ×2
arrays ×1
code-testing ×1
comparison ×1
console ×1
email ×1
exception ×1
filter ×1
frameset ×1
gdata ×1
gdata-api ×1
hashmap ×1
html ×1
map ×1
mobile ×1
modal-dialog ×1
oop ×1
performance ×1
python ×1
sendmail ×1
share ×1
stack-trace ×1
vector ×1