
jvm
缘来是你阿
这个人不太懒
展开
-
jvm虚拟机初识(堆,栈,方法区)
堆(FIFO先进先出):存放的是对象也就是new 的信息也包括class对象,每new一个信息,就会为对象分配堆内存区域,堆分配了对象的空间,当垃圾回收器检测到某对象未被引用,则自动销毁该对象,如果忘记销毁对象,那么它的内存空间还在。就会导致内存泄漏。- 和程序开发密切相关- 应用系统对象都保存在java堆中- 所有线程共享java堆- 对分代GC来说,堆也是分代的- GC...原创 2018-11-11 20:14:57 · 463 阅读 · 0 评论 -
jvm内存模型
https://www.cnblogs.com/liclBlog/p/9379767.html补充:可见性 一个线程修改了变量,其他线程可以立即知道保证可见性的方法- volatile- synchronized (unlock之前,写变量值回主存) - final(一旦初始化完成,其他线程就可见)有序性–在本线程内,操作都是有序的–在线程外观察,操作...原创 2018-11-11 20:19:55 · 119 阅读 · 0 评论 -
永久代(jdk8以后是元空间)
方法区被分为两个主要的子区域:1 持久代也就是你说的永久代,翻译不同这个区域会存储包括类定义、结构、字段、方法(数据及代码)以及常量在内的类相关数据。它可以通过-XX:PermSize及-XX:MaxPermSize来进行调节。如果它的空间用完了,会导致java.lang.OutOfMemoryError: PermGenspace的异常。而JDK8开始,持久代已经被彻底删除了,取代它的是另...转载 2019-07-08 10:44:00 · 398 阅读 · 0 评论 -
栈帧结构简单笔记
局部变量表局部变量表(Local Variable Table)是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。在Java程序编译为Class文件时,就在方法的Code属性的max_locals数据项中确定了该方法所需要分配的局部变量表的最大容量。关于局部变量表,还有一点可能会对实际开发产生影响,就是局部变量不像前面介绍的类变量那样存在“准备阶段”。我们已经知道类变量有两次赋...转载 2019-07-06 14:33:15 · 201 阅读 · 0 评论 -
junit+TestRunnable实现并发测试
TestRunnable runner = new TestRunnable() { @Override public void runTest() throws Throwable { //你的测试内容 } }; int runnerCount = 3...转载 2019-08-22 15:19:33 · 1081 阅读 · 0 评论