JVM内存分析系列(十三)内存实践理解

[b]java堆[/b]
包括
新生代:eden,survival(from),survival(to)
老年代:

[b]java方法区[/b]
Hot Spot JVM里方法区就是永久代

[b]Direct Memory[/b]
可以通过 -XX:MaxDirectMemorySize调整大小
用法

Field unsafeField = sun.misc.Unsafe.class.getDeclaredFields()[0];
unsafeField.setAccessible(true);
sun.misc.Unsafe unsafe = (sun.misc.Unsafe) unsafeField.get(null);
unsafe.allocateMemory(1024 * 1024);


[b]线程堆栈[/b]
可以通过-Xss调整,内存不足时抛出StackOverFlowError(纵向无法分配,即:无法分配新的栈帧)或OutofMemoryError:unable to create new native thread(横向无法分配,即无法建立新的线程)

[b]socket缓存区[/b]
每个socket链接都有Receive和Send两个缓存区,分别占大约37KB和25KB的内存。链接多的话,这块内存占用也比较可观。如果无法分配,则可能会抛出IOException:Too many open files异常。

[b]JNI代码[/b]
如果代码中使用JNI调用本地库,本地库使用的内存也不在堆中。

[b]虚拟机和GC[/b]
虚拟机本身和GC的代码执行也要消耗一些内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值