- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
最近,我使用 Eclipse 使用 Scala 编写了一些 Android 应用程序。一切都很好,直到我的程序只有几节课/Activity 。当我添加更多代码时,JVM 开始崩溃,eclipse 经常死机,adb 不断失去连接。任务管理器显示 Java 进程正在占用 800 到 1300 MB 的内存!
我的电脑硬件参数不错,i7 3rd gen, 8GB DDR3 和 SSD 256。所以这不是原因。
我的软件也是最新的,包括最新版本的 Eclipse、Android SDK、Scala 和 Java 开发工具包,以及所有用于 eclipse 的插件。 -vmargs 是为 scala 开发配置的,但它根本没有帮助。所以我将其作为问题的原因消除了。
当我用 Java 重写我的代码时,一切都很顺利,我可以继续我的项目。
有没有人找到在 Android 项目中使用 scala 的解决方案?我在这里和谷歌群组上阅读了几个类似的主题,但没有关于这个问题的答案。
编辑:
我使用 visual vm 分析了我的代码,但堆空间使用情况正常。这是我的一些代码 fragment 。
imports ...
class MainActivity extends FragmentActivity {
private lazy val timePicker = findViewById(R.id.timePicker).asInstanceOf[TimePicker]
private lazy val spinner_sourceBank = findViewById(R.id.spinnerSource).asInstanceOf[Spinner]
private lazy val spinner_targetBank = findViewById(R.id.spinnerDestination).asInstanceOf[Spinner]
private lazy val myApplication = getApplication.asInstanceOf[MyApplication]
private var ignoreTimeChange = false
override protected def onCreate(savedInstanceState: Bundle) = {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
timePicker.setIs24HourView(true)
initializeSpinner(spinner_sourceBank)
initializeSpinner(spinner_targetBank)
}
private def initializeSpinner(spinner: Spinner) = {
val adapter = ArrayAdapter.createFromResource(this, R.array.banks, R.layout.spinner_item)
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
spinner.setAdapter(adapter)
}
def reset(w: View) = {
timePicker.setCurrentHour(13)
timePicker.setCurrentMinute(00)
spinner_sourceBank.setSelection(0)
spinner_targetBank.setSelection(0)
}
def submit(w: View) = {
if (spinner_sourceBank.getSelectedItemPosition == 0 || spinner_targetBank.getSelectedItemPosition == 0) {
new AlertDialog.Builder(this).setPositiveButton("OK", new OnClickListener {
override def onClick(dialog: DialogInterface, which: Int) { dialog dismiss }
}).setMessage(getString(R.string.alert_title)).setTitle("Alert Dialog").setIcon(android.R.drawable.ic_dialog_alert).create.show
} else manageFragments(sourceBank, targetBank)
}
def manageFragments(sourceBank: String, targetBank: String) = {
val fragmentTransaction = getSupportFragmentManager.beginTransaction
if (targetBank == sourceBank) myApplication.setCurrentFragment(MyApplication.NOW)
else myApplication.setCurrentFragment(MyApplication.FIRST_SESSION)
fragmentTransaction.replace(R.id.fragment_container, myApplication.getCurrentFragment)
fragmentTransaction.commit
}
override def onCreateOptionsMenu(menu: Menu): Boolean = { getMenuInflater.inflate(R.menu.activity_main, menu); true }
}
我可以在移动设备上测试我的应用程序,它运行得很好。我也可以编写代码,但 eclipse 的表现就像在旧计算机上运行一样 - 切换选项卡需要花费大量时间,因此需要花费大量时间进行构建和部署。
最佳答案
将这些添加到 eclipse.ini(或编辑如果存在),因为它们更适合 Scala 开发:它们应该出现在 eclipse 条目下面,例如 -vm:
-Xverify:none
-Dosgi.requiredJavaVersion=1.6
-Xms900m
-Xmx900m
-Xss2m
-XX:PermSize=256m
-XX:MaxPermSize=256m
-XX:MaxGCPauseMillis=20
-XX:MaxHeapFreeRatio=70
-XX:+ScavengeBeforeFullGC
-XX:+UseParallelOldGC
-XX:+UnlockExperimentalVMOptions
-XX:+UseFastAccessorMethods
-XX:ReservedCodeCacheSize=128m
-XX:+TieredCompilation
-XX:+AggressiveOpts
可能不太可能,但如果您正在使用 CMS GC,请从文件中删除对它的引用。
关于Android、scala 和 eclipse = 不稳定的混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14039149/
首先让我说,我知道这是一个相当普遍的话题,但在搜索它时,我找不到另一个可以澄清以下情况的问题。如果这可能是重复的,我很抱歉,但是你去: 我是并发新手,为了回答问题,我得到了以下代码: a)为什么除了“
我有这个简单的 MigLayout: 最后两个组件 (JScrollPanes) 应具有相同的宽度。但事实上,如果我调整窗口大小,它们会随机跳跃。是否可以使它们的宽度相等?我还能如何排列组件使其看起来
我的 jQuery 导航存在问题。它没有通常的导航设置(ul > li > ul 等)。我这里有一个 jsfiddle:http://jsfiddle.net/RMRGH/2/ 如果将代码放在本主题中
我只使用 HTML/CSS 制作了一个饼图计时器动画。你可以在这里看到它: https://jsfiddle.net/yisusans/why2wy5q/ .timer-container { b
我有一个菱形网格(因此是一个正常的正方形网格,旋转了 45 度),我希望能够在该网格内部拖动一个点。我使用 canvas 元素制作了我的网格并应用了一个转换:rotate(45deg)。但是,这会导致
我目前正在用 C 编写应用程序,我打算在其中模拟 ubuntu 中的 CPU 负载低于 100%。我使用阶乘算法对我的 CPU 施加压力,并使用 nanosleep 函数来调节 CPU 使用率。目标是
我想使用subprocess.Popen来运行一个进程,具有以下要求。 我想在进程运行时将 stdout 和 stderr 通过管道传回 Popen 的调用者。 如果进程仍在运行,我想在 timeou
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我正在编写一个客户端,使用套接字从记录 PC (RP) 接收 EEG 数据,以产生一些在线反馈。 RP 有一个通过 TCP 发送数据的服务器。数据与 block 一起发送,每个 block 都有一个标
我在 Win 10 64 位上运行 PG 9.5。我正在 VS 2016 下编译 C。 我正在形成一个函数,它将演变成一个有点复杂的野兽。为了测试我最初的努力,该函数接受一个 int4 数组(这工作正
我正在尝试更新 使用 jquery 标记,但是,当我单击“提交”按钮时,我使用 innerHTML 插入的文本很快就会消失。除非我使用 Firefox,在这种情况下它似乎可以工作 - 如果 - 我插入
使用 st_distance_sphere 时从 MySQL 给出的结果看起来真的很不稳定。 在用户表上运行此查询:(距离点9.45公里以内的用户列表) select *, st_distance_s
所以我昨天发布了一个关于在容器中放置一些 div 的问题,以便它们与容器的边缘对齐,但在中间它们之间的间距相等。由于它们是可排序的(使用 jQuery UI Sortable),所以这很复杂。 Gre
我正在尝试将一个 int 字符串转换为一个 int 数组。 这是我的代码: int premaster1 = 3255859; char hashString[100]; int hashString
我用 Codeigniter 的 Active Record 做了一个简单的选择查询,但不知何故它与我真正的 MySQL 记录有不同的结果。 MyModel.php class MyModel ext
我正面临关于 StampedLock 的奇怪行为.以下是主要有问题的代码行: StampedLock lock = new StampedLock(); long stamp1 = lock.read
我使用 Cython 做了一个相当复杂的 python 扩展。在我得到一些奇怪的内存行为之前,它工作正常,形式如下: *** glibc detected *** /usr/bin/python2.7
请引用这个 fiddle :http://jsfiddle.net/eQegA/3/ .spinner { width: 100px; height: 100px; bord
我有一个不稳定的 Java JMS 问题。片刻工作正常,但不规律地抛出以下异常并中断执行。 请务必注意,这不会停止代理。 javax.jms.JMSException: Peer (vm://test
我编写了一个使用 永久运行的程序C 库。 它基本上解密参数中给出的密码。问题是有时它可以完美地工作,有时它会失败(使用相同的公钥/私钥/密码,返回此错误: message: error:040650
我是一名优秀的程序员,十分优秀!