1.java内存模型 1.JVM内存模型 JVM内存模型如上图,需要声明一点,这是《Java虚拟机规范(Java SE 7版)》规定的内容,实际区域由各JVM自己实现,所以可能略有不同。以下对各区域进行简短说明。 1.1程序计数器 程序计数器是众多编程语言都共有的一部分,作用是标示下一条需要执行的指 ...
分类:
编程语言 时间:
2018-08-14 18:48:49
阅读次数:
210
引自《深入理解Java虚拟机》 关键词:优先级,大对象,老不死对象 三个策略: 对象优先在Eden区分配 大对象直接进入老年代(大对象举例:很长的String,很长的数组) 长期存活的对象进入老年代 长期存活:从Eden出生,每经历一次Minor GC 年龄加1(出生时为0,年龄为1时已经在Surv ...
分类:
其他好文 时间:
2018-08-13 20:58:14
阅读次数:
135
为每个对象生命周期不一样,jvm在做内存管理的时候,就帮我们分成了三个区域: 1. 新生代(回收频率高) 新生和老年默认大小比例为1:2 2. 老年代(回收频率低) 最好所有的对象都不要进入老年代,最好新生代能及时回收空对象释放空间供下次使用。 3. 永久代(一般放类的加载信息,常量,静态变量)。 ...
分类:
其他好文 时间:
2018-08-12 18:51:16
阅读次数:
184
要了解Java垃圾收集机制,先理解JVM内存模式是非常重要的。今天我们将会了解JVM内存的各个部分、如何监控以及垃圾收集调优。 ...
分类:
编程语言 时间:
2018-08-11 01:30:27
阅读次数:
161
JVM定义了若干个程序执行期间使用的数据区域。这个区域里的一些数据在JVM启动的时候创建,在JVM退出的时候销毁。而其他的数据依赖于每一个线程,在线程创建时创建,在线程退出时销毁。 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。分支、循环、跳转、异常处理、 ...
分类:
其他好文 时间:
2018-08-10 11:02:09
阅读次数:
161
JVM 内存划分 栈 虚拟机栈 本地方法栈 堆 方法计数器 方法区 对象的分配 指针碰撞 空闲列表 (√) 分配内存 线程安全问题: 分配动作处同步 实际上采用CAS保证分配的原子性 TLAB 本地线程分配缓存 对象内存中的信息布局 对象头 Mark word (根据对象状态复用此部分空间) has ...
分类:
其他好文 时间:
2018-08-06 00:38:25
阅读次数:
211
一、硬件与效率的一致性 计算机的存储设备与处理器的运算速度存在几个数量级的差距,现在计算机系统不得不在内存和处理器之间增加一层高速缓存(cache)来作为缓冲。将运算需要的数据复制到缓存中,让运算能够快速进行,当运算结束的时候再讲数据从缓存同步到内存中,这样处理器无须等待缓慢的内存读写。除了增加高速 ...
分类:
编程语言 时间:
2018-08-05 14:21:37
阅读次数:
221
报错原因: Kafka默认使用的JVM内存配置: export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G" 如果服务器内存较小,需要调整启动配置。 解决办法: 打开/opt/kafka_2.11-2.0.0/binkafka-server-start.sh,降低启动内存大小. 如 ...
分类:
系统相关 时间:
2018-08-03 14:36:15
阅读次数:
1171
JVM的内存区域划分 学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如何划分的呢? 由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论 ...
分类:
其他好文 时间:
2018-08-03 14:11:58
阅读次数:
95
JVM概要 JVM原理 java编译运行过程 JVM内存结构 ...
分类:
其他好文 时间:
2018-08-02 19:15:42
阅读次数:
187