小编Nei*_*eil的帖子

使用具有超过120GB RAM的Concurrent Mark Sweep垃圾收集器

有没有人设法在Hotspot中使用超过120GB RAM的Concurrent Mark Sweep垃圾收集器(UseConcMarkSweepGC)?

如果我将-ms和-mx设置为120G,JVM就会正常启动,但是如果我将它们设置为130G,则JVM会在启动时崩溃.JVM使用并行和G1收集器启动良好(但它们有自己的问题).

有没有人设法使用超过120GB堆的Concurrent Mark Sweep收集器?如果是这样,你有什么特别的,或者我只是在这里不走运?

来自JVM错误转储的堆栈如下:

Stack: [0x00007fbd0290d000,0x00007fbd02a0e000],  sp=0x00007fbd02a0c758,  free space=1021k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [libc.so.6+0x822c0]  __tls_get_addr@@GLIBC_2.3+0x822c0
V  [libjvm.so+0x389c01]      CompactibleFreeListSpace::CompactibleFreeListSpace(BlockOffsetSharedArray*, MemRegion, bool, FreeBlockDictionary::DictionaryChoice)+0xc1
V  [libjvm.so+0x3d1ae0]  ConcurrentMarkSweepGeneration::ConcurrentMarkSweepGeneration(ReservedSpace, unsigned long, int, CardTableRS*, bool, FreeBlockDictionary::DictionaryChoice)+0x100
V  [libjvm.so+0x49d922]  GenerationSpec::init(ReservedSpace, int, GenRemSet*)+0xf2
V  [libjvm.so+0x48d0b9]  GenCollectedHeap::initialize()+0x2e9
V  [libjvm.so+0x824098]  Universe::initialize_heap()+0xb8
V  [libjvm.so+0x82657d]  universe_init()+0x7d
V  [libjvm.so+0x4cf0dd]  init_globals()+0x5d
V  [libjvm.so+0x80f462]  Threads::create_vm(JavaVMInitArgs*, bool*)+0x1e2
V  [libjvm.so+0x51fac4]  JNI_CreateJavaVM+0x74
C  [libjli.so+0x31b7]  JavaMain+0x97
Run Code Online (Sandbox Code Playgroud)

我已经用Oracle(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7175901)为此提出了一个错误,但我想知道是否有其他人见过它.

java garbage-collection jvm jvm-hotspot concurrent-mark-sweep

18
推荐指数
1
解决办法
5199
查看次数

Scalatest:等待断言成为现实

是否有任何存在于scalatest中等待一段时间让一个断言变为真的?

所以,例如,如果我有一个异步计算某个东西的线程,我想在我的测试中等待计算等于期望值.

scala scalatest

13
推荐指数
1
解决办法
6962
查看次数

Scala:使用泛型类型参数声明方法

Scala中以下Java方法声明的等效内容是什么:

public <T>  T readValue(java.lang.String s, java.lang.Class<T> tClass)
Run Code Online (Sandbox Code Playgroud)

换句话说,我想声明一个采用类型为T的类的方法,并返回该类型的实例.

generics scala

10
推荐指数
1
解决办法
2万
查看次数

Python asyncio:当调用stop方法时,事件循环似乎没有停止

我有一个简单的测试,我使用该run_forever方法运行Python asyncio事件循环,然后立即在另一个线程中停止它.但是,事件循环似乎没有终止.我有以下测试用例:

import asyncio
from threading import Thread

loop = asyncio.get_event_loop()
thread = Thread(target=loop.run_forever)
thread.start()
print('Started!')
loop.stop()
print('Requested stop!')
thread.join()
print('Finished!')
Run Code Online (Sandbox Code Playgroud)

此测试用例打印:

Started!
Requested stop!
Run Code Online (Sandbox Code Playgroud)

因此,测试似乎阻塞thread.join(),等待事件循环终止.

如果我转储我的线程,我得到以下内容:

Thread 0x00007000087ec000 (most recent call first):
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/selectors.py", line 577 in select
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/base_events.py", line 1388 in _run_once
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/asyncio/base_events.py", line 421 in run_forever
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 862 in run
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 914 in _bootstrap_inner
  File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/threading.py", line 882 in _bootstrap

Current thread 0x00007fffc6b273c0 (most recent call first): …
Run Code Online (Sandbox Code Playgroud)

python multithreading python-asyncio

10
推荐指数
1
解决办法
2700
查看次数

Asyncio异常处理程序:直到事件循环线程停止后才被调用

我在我的asyncio事件循环上设置了一个异常处理程序。但是,它似乎直到事件循环线程停止后才被调用。例如,考虑以下代码:

def exception_handler(loop, context):
    print('Exception handler called')

loop = asyncio.get_event_loop()

loop.set_exception_handler(exception_handler)

thread = Thread(target=loop.run_forever)
thread.start()

async def run():
    raise RuntimeError()

asyncio.run_coroutine_threadsafe(run(), loop)

loop.call_soon_threadsafe(loop.stop, loop)

thread.join()
Run Code Online (Sandbox Code Playgroud)

如我们所料,此代码将显示“已调用异常处理程序”。但是,如果我删除关闭事件循环(loop.call_soon_threadsafe(loop.stop, loop))的行,它将不再打印任何内容。

我对此有一些疑问:

  • 我在这里做错什么了吗?

  • 有谁知道这是否是asyncio异常处理程序的预期行为?我找不到任何可以证明这一点的文件,这对我来说似乎有点奇怪。

我非常希望有一个长时间运行的事件循环,该循环记录其协程中发生的错误,因此当前行为对我来说似乎是有问题的。

python python-asyncio

6
推荐指数
1
解决办法
1898
查看次数