我试图使用ajax将objs数组传递给Laravel控制器中的函数.我没有在帖子后收到任何数据.
<script>
var itemCount = 0;
var objs=[];
$(document).ready(function(){
var temp_objs=[];
$( "#add_button" ).click(function() {
var html = "";
var obj = {
"ROW_ID": itemCount,
"STREET_ADDRESS": $("#street_address").val(),
"CITY": $("#city").val(),
"ZIP": $("#zip").val()
}
// add object
objs.push(JSON.stringify(obj));
itemCount++;
// dynamically create rows in the table
html = "<tr id='tr" + itemCount + "'><td>" + obj['STREET_ADDRESS'] + "</td> <td>" + obj['CITY'] + " </td> <td>" + obj['ZIP'] + " </td><td><input type='button' id='" + itemCount + "' value='remove'></td> </tr>";
//add to the table …
Run Code Online (Sandbox Code Playgroud) 我使用Realm 3.0.0作为我的Android应用程序的数据库.这就像一个问卷调查应用程序,用户在应用程序中导航很多.当我连续使用应用程序(来回)时,我收到以下错误:
Fatal Exception: io.realm.exceptions.RealmError: Unrecoverable error. mmap() failed: Out of memory size: 1073741824 offset: 0 in /Users/cm/Realm/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_SharedRealm.cpp line 109
at io.realm.internal.SharedRealm.nativeGetSharedRealm(SharedRealm.java)
at io.realm.internal.SharedRealm.(SharedRealm.java:187)
at io.realm.internal.SharedRealm.getInstance(SharedRealm.java:229)
at io.realm.internal.SharedRealm.getInstance(SharedRealm.java:204)
at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:124)
at io.realm.Realm.getDefaultInstance(Realm.java:210)
Run Code Online (Sandbox Code Playgroud)
现在我知道这主要原因不是关闭Realm实例.但我已经多次检查过了.而且我很肯定我关闭了每一个打开的实例.
该应用程序有许多活动和片段,所有活动和片段都在他们身上获得Realm实例并将其onCreate
关闭onDestroy
.还有其他后台网络作业用于上载获取Realm实例的数据.这些作业在完成运行或取消时关闭其Realm实例.
以上所有通过Dagger 2通过注入得到它们的Realm实例:
@Provides
@Nullable
static Realm realm(@Nullable RealmConfiguration configuration) {
if (configuration != null) {
Realm.setDefaultConfiguration(configuration);
return Realm.getDefaultInstance();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
配置也在同一个Dagger模块中提供.
更具体地说,问卷由ViewPager中显示的许多问题片段组成.每个片段都注入了一个领域.给定问题片段中的许多交互将数据写入数据库(一些异步,一些阻塞).这些片段还查询数据库onResume
以获取其更新的数据.其中一些数据也是从Realm中复制出来的realm.copyFromRealm()
.现在,在发生这些情况的任何给定时间,上传作业很可能正在运行并从数据库读取数据并将其上载到服务器.上传作业完成后,它会写入数据库.
我想我可以在给定时刻在UI线程上拥有最多7-12个片段/活动.0-3其他线程上的0-6个其他引用(后台作业).
此外,我通过Realm.compactRealm(realmConfiguration)
每次应用程序启动来压缩我的领域数据库(可能作为一个单独的问题,这似乎并不是一贯的工作).
上面我试图描述性地描述我的Realm用法,而不是详细介绍.现在我的问题是,当用户过度使用应用程序(在活动/片段之间往返(领域注入+数据库读取查询),上传数据(领域注入+数据库读写查询))时,我得到上面发布的内存不足错误.
我也在使用泄漏金丝雀,它没有检测到任何泄漏.(不确定它是否可以)
我是否以不应该使用的方式使用Realm?我应该关闭Realm实例onPause
而不是onDestroy
吗?我是否应该在一个活动中只有一个领域实例并拥有它的所有碎片(在我的情况下最多为5个)使用此实例?我可以在我的应用程序中进行哪些更改,也许我的应用程序架构可以解决此问题?
我感谢任何帮助,试图解决这个问题.
编辑:我在我的后台线程中分享领域开放逻辑.
我的所有作业共享相同的领域用法,如下所示:Realm通过以下方式延迟注入: …
在单独的线程中发送广播(在我的例子中为 ACTION_APPWIDGET_UPDATE)是否比 UI 线程(可运行)更好(为了性能)?或者在 UI 线程上这样做是否可以接受?
我在 Github 控制台上创建了新的 Repo。
在 Android Studio 中,提交并尝试推送到远程,推送被拒绝。
在studio,我可以成功连接github。
尝试使用 android studio 进行 Git pull,得到:
Git Pull Failed: fatal: refusing to merge unrelated histories
Run Code Online (Sandbox Code Playgroud)
即使在 git bash 中也得到了这个:
>git push origin master<br/>
To https://github.com/XXXX.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://github.com/XXX.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may …
Run Code Online (Sandbox Code Playgroud) android ×2
ajax ×1
git ×1
github ×1
javascript ×1
laravel-5 ×1
php ×1
realm ×1
realm-java ×1
runnable ×1