jvm
天高任鸟飞-海阔凭鱼跃
天高任鸟飞 海阔凭鱼跃
展开
-
JVM内存比例
...原创 2020-11-11 11:22:11 · 503 阅读 · 0 评论 -
并发编程之JMM模型&Volatile详解
微共享: 当多个线程同时去多次去刷新一个缓存行的时候,会导致缓存反复失效,从而降低效率。可以通过填充数据,让多个线程的变量不在同一个缓存行来提高效率缓存行大小: 64byte注解:@sun.misc.Contended 要和JVM参数一起使用 前端编译 后端编译 0101010He...原创 2020-09-17 22:22:56 · 237 阅读 · 0 评论 -
内存池与JVM内存模型
可以这样理解:JVM内存模型其实就是JVM在启动的时候从操作系统内存中要了一块大内存,然后将这个大内存分成五个区域:方法区、堆区、虚拟机栈、本地方法栈、程序计数器。注意区分JVM内存模型与JMM(Java Memory Model)这次课的目标就是把这张图讲透四个名词class文件即硬盘上的.class文件class content类加载器将硬盘上的.class文件读入内存中的那一块内存区域Class对象Class&l...原创 2020-09-04 10:06:13 · 226 阅读 · 0 评论 -
这篇文章上讲解的知识点你全搞明白了,Java中的字符串你就彻底理解了。
这篇文章上讲解的知识点你全搞明白了,Java中的字符串你就彻底理解了。字符数组的存储方式public static void main(String[] args) { char[] arr = new char[]{'1', '2'}; while (true);}字符串常量池即String Pool,但是JVM中对应的类是StringTable,底层实现是一个hashtable,看代码class StringTable : publi...原创 2020-09-04 10:04:01 · 165 阅读 · 0 评论 -
精讲垃圾回收算法
关于JVM的垃圾收集我准备这样讲:首先把相关的算法给大家讲明白然后将几款垃圾回收器结合算法给大家讲明白最后等大家把C++学完带着大家读读垃圾收集器的源码Java程序在运行过程中会产生大量的对象,但是内存大小是有限的,如果光用而不释放,那内存迟早被耗尽。如C、C++程序,需要程序猿手动释放内存,Java则不需要,是由垃圾回收器去自动回收。垃圾回收器回收内存至少需要做两件事情:标记垃圾、回收垃圾。于是诞生了很多算法。本节课的重点就是深入理解这些算法。下节课就是探讨各种垃圾收集...转载 2020-09-04 10:01:21 · 176 阅读 · 0 评论 -
OOM、调优工具、调优实战(二)
OOM与调优out of memory,即内存泄漏。哪些区域会发生OOM呢?1、方法区1、模拟OOM,上代码第23行的cache如何理解?设置为true、false结果会有何不同?import net.sf.cglib.proxy.Enhancer;import net.sf.cglib.proxy.MethodInterceptor;import net.sf.cglib.proxy.MethodProxy;import java.lang.refl...原创 2020-09-04 09:59:15 · 330 阅读 · 0 评论 -
C语言结构体、引用
结构体、联合体、枚举1、结构体声明struct Teacher{ int age; char isCool;};声明+定义变量struct Teacher{ int age; char isCool;}teacher;使用使用结构体定义变量时,前面的struct可写可不写struct Teacher{ int age; char isCool;}teacher;int _tma...原创 2020-09-04 09:54:37 · 7990 阅读 · 0 评论 -
JNI与实战内存池 JNI只看这一篇就够了
实战内存池为了节省课堂时间,我又写了一遍。课上我会从搭建项目一步一步让大家看到我们一般是如何使用C++开发出一个庞大的系统的。这个源码只有内存池,对于基础不是很好的同学,读起来会简单很多。源码地址:https://gitee.com/luban-ziya/cpp-memory-pool实战节奏:1、实现Memory Pool与Memory Chunk的关系2、检测内存泄漏及输出内存申请位置3、处理Memory Pool、Memory Chunk、Me...转载 2020-09-04 09:50:25 · 268 阅读 · 0 评论 -
c语言常见的几种指针用法
c语言是按照顺序执行的,c语言是面向过程的语言 字符串: 1)如何定义: char *str1 = "hi"; char str2[] = "hi"; char strArr1[] = { 'h', 'i' }; char strArr2[] = { 'h', 'i', '0' }; char strArr3[] = { 'h', 'i...原创 2020-08-26 10:08:42 · 1421 阅读 · 0 评论 -
OOM、调优工具、调优实战
1、自己想案例模拟OOM并思考如何调优 2、死锁、CPU占用过高问题排查,自己实际一遍1) 死锁实例public class LockTest { public static void main(String[] args) { System.out.println("main start ;"); ReentrantLock lock = new ReentrantLock(); ReentrantLock lock2 ...原创 2020-08-23 23:20:07 · 272 阅读 · 0 评论 -
java字节码的魔数是0xCAFEBABE,为什么是4字节,而不是8字节
一图胜万言1个十六进制数对应 4 位 二进制数,那么CAFEBABE 一共 8 个十六进制数,一共需要 32 位二进制数,对应就是 4 个字节如果魔数定为 0xDE的话,只用 1 个字节就可以搞定啦,可以省点空间,哈哈,不过太容易撞衫了,每个文件格式都会定义自己一套开始的魔数。...转载 2020-08-16 07:17:42 · 1042 阅读 · 1 评论 -
JVM内存结构、原理--新生代老年代
https://blog.csdn.net/jisuanjiguoba/article/details/80156781图解JVM GC过程--很好https://www.jianshu.com/p/314272e6d35bjava内存结构图Java堆堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象...转载 2020-04-11 10:27:14 · 242 阅读 · 0 评论 -
JVM内存结构、原理--新生代老年代
https://blog.csdn.net/jisuanjiguoba/article/details/80156781图解JVM GC过程--很好https://www.jianshu.com/p/314272e6d35bjava内存结构图Java堆堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象...转载 2020-04-11 10:26:37 · 265 阅读 · 0 评论 -
JVM内存结构、原理--新生代老年代
https://blog.csdn.net/jisuanjiguoba/article/details/80156781图解JVM GC过程--很好https://www.jianshu.com/p/314272e6d35bjava内存结构图Java堆堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中产生了一个数组或者对象...转载 2020-04-11 10:25:54 · 439 阅读 · 0 评论 -
新生代和老年代
什么是堆:new出来的的对象都会存放在堆当中堆内存分为两个区:(垃圾回收机制)新生代:Eden,s0,s1老年代:刚new出来的对象存放在Eden区域中新生代:刚创建对象,先存放在新生代老年代:如果对象频繁被使用,对象放入老年代s0,s1大小相同:为了来及回收机制的复制算法垃圾回收机制需要经常去老年代进行垃圾回收吗?垃圾回收机制主要是对新生代进行垃圾回收。堆内存参数配置:...转载 2020-04-11 10:24:22 · 127 阅读 · 0 评论 -
JVM简介堆中新生代老年代浅析
一、JVM内存结构由程序计数器、堆、栈、本地方法栈、方法区等部分组成。1)程序计数器几乎不占有内存。用于取下一条执行的指令。2)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和旧生代,新生代又被进一步划分为Eden和Survivor区,最后Survivor由FromSpace和ToSpace组成。一般情况将新生代分为Eden ,两块...转载 2020-01-04 17:45:47 · 193 阅读 · 1 评论 -
kill -3 PID命令获取java应用堆栈信息
一、应用场景: 当linux服务器出现异常情况(响应缓慢,负载持续飙升)并且服务器没有安装对应的包而无法使用jstack等命令时,可以使用linux的kill相关命令打印堆栈信息。 命令格式:kill -3 PID二、执行步骤:2.1、获取java进程的PIDps -ef|grep java结果的第二列数字就是进程对应的pid。2.2、kill -3 PID...转载 2020-01-04 16:03:54 · 1695 阅读 · 0 评论