小编pio*_*tec的帖子

ubuntu上的Java内存不足,但存在大量缓存内存

我有一个带4GB RAM的ubuntu 14.04系统,x86_64 3.13.0-48通用内核和openjdk-7.

我的记忆用法如下:

# free -h
             total       used       free     shared    buffers     cached
Mem:          3.7G       3.6G       127M       988M        44M       3.3G
-/+ buffers/cache:       232M       3.4G
Swap:           0B         0B         0B
Run Code Online (Sandbox Code Playgroud)

因此,有足够的内存用作磁盘缓存,当任何应用程序需要时,应该刷新和释放(AFAIK).

所以,我尝试运行java:

# java -Xms32m -Xmx512m -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)

运行只java -version返回相同的结果.当有3GB的缓存内存时,为什么java不能运行?我在同一台机器上运行PostreSQL,但它的shared_buffers设置为940MB.

编辑:

我强制刷新磁盘缓存 - 仍然是相同的结果:

# free -h
             total       used …
Run Code Online (Sandbox Code Playgroud)

java linux ubuntu caching memory-management

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

Python 3.6 类型提示接受同一泛型类型的泛型类类型和实例类型的函数

我有一个具有以下签名的函数:

def wait_for_namespaced_objects_condition(
    obj_type: Type[NamespacedAPIObject],
    obj_condition_fun: Callable[[NamespacedAPIObject], bool],
) -> List[NamespacedAPIObject]:
...
Run Code Online (Sandbox Code Playgroud)

这里的重要部分是NamespacedAPIObject参数。此函数采用obj_typeas 类型规范,然后创建该类型(类)的对象(实例)。然后将该类型的其他一些对象添加到列表中,然后使用mypy`obj_condition_fun类型List[NamespacedAPIObject]. This works fine and also evaluates OK with 对其进行过滤并返回。

现在,我想让这个函数通用,以便NamespacedAPIObject可以使用它的任何子类型。我的尝试是这样做的:

T = TypeVar("T", bound=NamespacedAPIObject)

def wait_for_namespaced_objects_condition(
    obj_type: Type[T],
    obj_condition_fun: Callable[[T], bool],
) -> List[T]:

Run Code Online (Sandbox Code Playgroud)

但是Type[T]TypeVar,所以这不是要走的路。问题是:应该使用什么类型的obj_type参数才能使这项工作起作用?我试过Generic[T],这对我来说似乎是最合理的,但它不起作用。如果我把它放在那里obj_type: Tmypy评估这可以,但对我来说似乎是错误的。在我看来,这意味着它obj_type是一个子类型的类的实例NamespacedAPIObject,而我想说的是“T 是一个表示 子类型的类变量NamespacedAPIObject。如何解决这个问题?

[编辑] 为了更好地解释(请参阅下面的评论)为什么Type[T]对我不起作用:在我的情况下, T 的所有子类型都实现了 class method objects(),但是当我尝试像这样编写代码时:

obj_type.objects() …
Run Code Online (Sandbox Code Playgroud)

python type-hinting python-3.x mypy python-typing

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