在研究G1
GC时,我发现了这篇文章:http
:
//www.oracle.com/technetwork/articles/java/g1gc-1984535.html。在该文章中,内容如下:
G1
GC是一个区域化的,按代划分的垃圾收集器,这意味着Java对象堆(堆)被划分为多个大小相等的区域。启动时,Java虚拟机(JVM)设置区域大小。区域大小可以从1
MB到32 MB不等,具体取决于堆大小。目标是不超过2048个区域。
这是否意味着G1 GC可以处理的Java堆内存的最大大小为2048 * 32M,如果超过该大小,将会发生什么?
从HotSpot
JVM来源
:
// Minimum region size; we won't go lower than that.
// We might want to decrease this in the future, to deal with small
// heaps a bit more efficiently.
static const size_t MIN_REGION_SIZE = 1024 * 1024;
// Maximum region size; we don't go higher than that. There's a good
// reason for having an upper bound. We don't want regions to get too
// large, otherwise cleanup's effectiveness would decrease as there
// will be fewer opportunities to find totally empty regions after
// marking.
static const size_t MAX_REGION_SIZE = 32 * 1024 * 1024;
// The automatic region size calculation will try to have around this
// many regions in the heap (based on the min heap size).
static const size_t TARGET_REGION_NUMBER = 2048;
MIN_REGION_SIZE
(1MB)和MAX_REGION_SIZE
(32MB)是硬限制;TARGET_REGION_NUMBER
如果在JVM选项中未指定默认区域大小,则该提示仅用于计算默认区域大小。实际数字可能超过此值。给定n个非负整数a1, a2,..., an,其中每个表示坐标(i, ai)处的点。绘制n条垂直线,使得线i的两个endpoint位于(i, ai)和(i,0)。找到两条线,它们与x轴一起构成一个容器,使得容器中包含最多的水。 注意:容器不能倾斜。 一种解决方案可能是我们取每一行并找到每一行的区域。这需要O(n^2)。没有时间效率。 另一种解决方案是使用DP找到每个索引的最大面积,然后在索引n处,
考虑一个N行M列的矩阵,其中每个单元格包含一个“0”或一个“1”,任何包含1的单元格都称为填充单元格。如果两个单元在水平、垂直或对角线上相邻,则称它们是相连的。如果一个或多个填充的单元格连接在一起,它们就形成了一个区域。任务是找到最大区域的单位面积。 下面是我的代码: 下面提到的测试用例的代码不起作用: 1 4 7 1 1 1 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 1 1 1
我已经阅读了很多关于设计分区键和排序键的DynamoDB文档,但我认为我一定缺少一些基本的东西。 如果分区密钥设计不好,那么当单个分区密钥值的数据超过10GB时会发生什么情况? “了解分区行为”部分指出: “单个分区可以容纳大约10 GB的数据” 它如何对单个分区键进行分区? http://docs.aws.amazon.com/amazondynamodb/latest/developergui
问题内容: 读取文件太大而无法容纳缓冲区时,出现致命错误。 要么, RangeError:“ size”参数不得大于Function.Buffer.allocUnsafe(buffer.js:209:3)的2147483647 如果我尝试分配1GB缓冲区,则会遇到同样的致命错误, Node.js Buffer类实例的最大大小是多少? 问题答案: V8中类型化数组的最大长度当前设置为以下值,具体取决
本文向大家介绍opencv 查找连通区域 最大面积实例,包括了opencv 查找连通区域 最大面积实例的使用技巧和注意事项,需要的朋友参考一下 今天在弄一个查找连通的最大面积的问题。 要把图像弄成黑底,白字,这样才可以正确找到。 然后调用下边的方法: RETR_CCOMP:提取所有轮廓,并将轮廓组织成双层结构(two-level hierarchy),顶层为连通域的外围边界,次层位内层边界 方法二
问题内容: 当前,在我们的测试环境中,最大和最小JVM堆大小设置为相同的值,基本上与专用服务器计算机为我们的应用程序所允许的大小相同。这是性能最佳的配置,还是给JVM一个更好的范围? 问题答案: 设置- Xms的主要原因是,如果您在启动时需要一定的堆。(防止OutOfMemoryErrors在启动时发生。)如上所述,如果您需要启动堆来匹配最大堆,则是匹配它的最大时间。否则,您将不需要它。只是要求应