1 、操作系统的虚拟内存? 当然操作系统提供了虚拟内存的功能但是这个依赖于操作系统,能不能 JVM 自己来做这个事情。 2 、磁盘 IO 的速度比内存读写慢了很多? 实际上优化一下磁盘 IO 和用 SSD 的吧这两者的差别不会特别大,放在磁盘上就是“时间换空间”,如果你的系统对时间不是特别敏感但是内存特别大的话也许可以考虑? 3 、GC 遍历对象的时候如果有对象在磁盘会增加 GC 的时间和性能消耗? 所以目前考虑的是把不参与 GC 的方法区放上去
1
GM 2021-05-13 11:06:57 +08:00
先问几个问题:
方法区占用空间多少 M ? 占用的这些内存空间,折算成本值人民币多少钱? 为了省这点空间和金钱,损失巨大的性能提升,值不值? |
2
ch2 2021-05-13 11:07:36 +08:00
你要自己处理缺页异常?
|
3
privatetan 2021-05-13 11:07:52 +08:00
可以研读 java 虚拟机规范
|
4
ignor 2021-05-13 11:13:01 +08:00 via Android
什么样的系统方法区会占内存特别大?
|
5
yitingbai 2021-05-13 11:16:53 +08:00
class 能占用多少空间啊!!! 可以说是微乎其微, 占内存的都是数据, 你把数据都缓存到磁盘上, 按需加载不就行了
|
6
nightwitch 2021-05-13 11:20:22 +08:00
相当于要在用户态重新实现类似页表的机制。
不具备可行性,因为内核查找页表是有硬件加速的,用软件模拟能慢出天际。 |
7
surbomfla 2021-05-13 11:22:54 +08:00 via Android
没必要,出了问题谁背锅。真的想要减少内存占用直接换语言
|
8
charlie21 2021-05-13 11:25:15 +08:00 1
向落后进化
|
9
liudaolunhuibl OP @yitingbai 方法区只有类信息?没有常量??
|
10
liudaolunhuibl OP @privatetan jvms 上没有相关内容
|
11
liudaolunhuibl OP @GM meta Space 默认最小是 20M 最大是无限大,一般设定都是 1024,1 个 G
|
12
Kiske 2021-05-13 11:50:48 +08:00
Samsung 980 Pro 2TB 连续读取速度 7000MB/s 连续写入速度 5100MB/s
芝奇 Trident Z DDR4 3200MHz 内存读取 30951MB/s 写入 31529MB/s |
13
liudaolunhuibl OP @Kiske 10 倍以内对于某些情况下是否是可以接受的?
|
14
olaloong 2021-05-13 13:51:25 +08:00
@liudaolunhuibl 醒醒,10 倍是连续读写
|