【发布时间】:2015-06-27 15:16:49
【问题描述】:
正如我们所知,当内存移动到 cpu 上的 L 个缓存时,它会随着缓存线移动,因此整个缓存的性能优化...
在java中,当我们定义一个数组时,jmm保证每个元素的内存将被顺序分配。但是,如果我们有引用数组,这些引用可以随机指向内存中的不同位置。
我的问题是 java 是否按顺序分配实际对象内存?我们为此做了哪些优化?
例如,如果我们声明 int[],我们确信它们实际上在内存中都是连续的,但是如果我们定义一个包含两个 int 字段的 NewType(如 struct),并声明 NewType[],java 会发现是否按顺序保留实际内存?
【问题讨论】:
-
好吧,也许我错了。 内存分配和JVM不能混用。 JVM 会按照自己的感觉进行动态内存分配(从技术上讲,资源可用性在那个时间点是最好的)
-
单个对象分配在单个块中。与此相关的是如果 GC 是深度或呼吸优先复制的事实。两种变体都存在于 Hotspot 中。在这里你可以找到它的一些方面:oracle.com/technetwork/server-storage/ts-6434-159339.pdf
-
Didint 很明白“GC 是深度或呼吸优先复制”你能给出几个链接吗? (谷歌搜索但没有找到合理的)
标签: java optimization memory-management jvm javac