我正在开发一个Java桌面应用程序,其中有许多缓存,例如对象池,缓存的JPanel等等.
示例:当用户从一个面板切换到另一个面板时,如果用户切换回来,我不会销毁前一个面板.
但是,应用程序内存消耗可能会高,而系统迫切需要这些内存资源,而我正在消耗这些资源并不合理......
在iOS应用程序中,我将在"applicationDidReceiveMemoryWarning"方法中发布它们.但在Java ...?
那么,何时是在Java中发布缓存对象的好时机?
我有以下代码:
- (void)downloadPressed:(id)sender {
[_download startDownloadWithParser:^id(NSData *rawData) {
NSString* downloadName = [[_download url] lastPathComponent];
// ... more code
}];
[self reloadView];
}
Run Code Online (Sandbox Code Playgroud)
这段代码位于一个内部UITableViewCell,众所周知,重用机制应该特别注意..
我的问题,简洁明了:
如果我在块之后添加以下代码行:
_download = nil;
Run Code Online (Sandbox Code Playgroud)
该_download区块内的变量也被nil'd!我希望得到一份副本,怎么样?
首先,我从这里得到了这个想法:
曾经有一个我编写的应用程序使用了大量的内存小块,每个都分配了malloc().它工作正常,但很慢.我用一个替换了对malloc的许多调用,然后在我的应用程序中切掉了那个大块.它要快得多.
我正在分析我的应用程序,当我减少malloc调用的数量时,我得到了意想不到的良好性能提升.不过,我仍在分配相同数量的内存.
所以,我想做这个人做的事情,但我不确定最好的方法是什么.
我的想法:
// static global variables
static void * memoryForStruct1 = malloc(sizeof(Struct1) * 10000);
int struct1Index = 0;
...
// somewhere, I need memory, fast:
Struct1* data = memoryForStruct1[struct1Index++];
...
// done with data:
--struct1Index;
Run Code Online (Sandbox Code Playgroud)
陷阱:
灵感来自Mihai Maruseac:
首先,我创建一个链表int,基本上告诉我哪些内存索引是免费的.然后我在我的struct中添加了一个属性,int memoryIndex它可以帮助我返回以任何顺序占用的内存.幸运的是,我确信我的内存需求在任何给定时间都不会超过5 MB,所以我可以安全地分配那么多内存.解决了.
Apple在UILocalNotification类引用中指定音频文件必须来自应用程序包.然而,一些聪明的极客通过使用以下方法找到了解决这个限制的方法:
// this works by going up the bundle dir, then pointing to the Documents dir
localNotif.soundName = @"../Documents/blabla.caf";
Run Code Online (Sandbox Code Playgroud)
这种解决方法已在iOS 5的效果不错,但是,它在IOS 6打破了在绝望的尝试,试图拿出一个解决办法新,我做了一个别名(符号链接)称为blabla.caf该点../Documents/blabla.caf,并把它放在到应用程序中束.这是我被卡住了.
现在,我得到了一个PBXCp error,并且Xcode无法完成应用程序部署到设备,因为显然
错误:/Users/stuff/moreStuff/appName/../Documents/blabla.caf:没有这样的文件或目录
我的问题:
Documents目录只是为了关闭Xcode?我上传了一个应用程序到我的国家的应用程序商店,它在短短两天内免费获得了第一名!
好吧,我不吹牛,因为无论如何这里没有人关心:p
但!我认为我的应用程序应该在主页上有一张图片(在600x300像素矩形中预览应用程序的大图像[大小近似为:P])
我可以在下一次更新中将我的设计包含在哪里,那么苹果可以看到它并考虑发布它吗?
大小是多少?
(我的问题是否清楚?:p)
每个递归函数都有一个等效的循环吗?(两者都达到了相同的效果).
我有这个递归函数:
private static boolean recur(String word, int length) {
if(length == 1 || length == 2)
return false;
if(length == 0)
return true;
if(words[length].contains(word.substring(0, length)))
return recur(word.substring(length), word.length() - length);
return recur(word, length-1);
}
Run Code Online (Sandbox Code Playgroud)
假设单词是Set [],并且单词[i] =具有长度为i的单词的集合.
我要做的是:用一个单词启动递归(比如说,"stackoverflow",没有空格),我试图找出这个单词是否可以切成子词("堆栈","结束","流程") ..子词的最小长度是3,并且假设长度i的子词在Set words [i]中.
我可以确认这段代码有效,但它可能有内存问题,所以我想将它转为循环..如果可能的话.
你需要更多信息吗?
谢谢.
我试图找到一个最佳代码来定位长整数(64位)中的单个位索引.长整数只有一个设置位.(使用C语言)
目前,我只是将整个事情转移一点,然后检查零.我已经阅读了有关查找表的内容,但它不会对整个64位进行操作.我考虑过将每个8位检查为零,如果不使用查找,但我仍然需要一次移动8位.(换挡8比换挡8次要好?)
(注意:我正在为移动设备开发,它们[并不奇怪]慢).
我拼命地尝试为 find 命令编写一个模式,但它从来没有工作过。我想搜索所有*.txt文件*.h:
find . -name "*(*.h|*.txt)"
find . -name "(*.h|*.txt)"
find . -name *(*.h|*.txt)
find . -name "*\(*.h|*.txt\)"
find . -name '*("*.h"|"*.txt")'
Run Code Online (Sandbox Code Playgroud) 我正在尝试为android编译一个简单的C库,但生成的库不包含任何符号/对象!我正在使用nm命令检查库.
这是Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := my_lib_static
LOCAL_MODULE_FILENAME := libmylib
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_SRC_FILES := File1.c File2.c
include $(BUILD_SHARED_LIBRARY)
# or include $(BUILD_STATIC_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
编辑:
创建一个名为"objs"的子文件夹,其中包含所有符号.
编辑:
这是输出gobjdump:
MyLibBot.o: file format elf32-littlemips
gobjdump: MyLibBot.o: not a dynamic object
DYNAMIC SYMBOL TABLE:
no symbols
MyLibCommon.o: file format elf32-littlemips
gobjdump: MyLibCommon.o: not a dynamic object
DYNAMIC SYMBOL TABLE:
no symbols
MyLibGameLogic.o: file format elf32-littlemips
gobjdump: MyLibGameLogic.o: not a dynamic object
DYNAMIC SYMBOL TABLE: …Run Code Online (Sandbox Code Playgroud) c java-native-interface android static-libraries android-ndk
我在另一个函数中有一些函数.在function1中我想使用NSTimer在一段时间之后调用func2,如下所示:
func myFunc1()
{
NSTimer.scheduledTimerWithTimeInterval(1, target: ??, selector:#selector(myFunc2()), userInfo: nil, repeats: false)
func myFunc2()
{
// do something...
}
}
Run Code Online (Sandbox Code Playgroud)
我应该通过哪个正确的"目标"价值?它甚至可能吗?