
jvm
什么啊什么Q
keep slow
展开
-
-Xms -Xmx等jvm参数的含义
堆内存分配:JVM初始分配的内存由-Xms指定,默认是物理内存的1/64JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。非堆内存分配:JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxP转载 2021-03-19 15:38:23 · 12695 阅读 · 0 评论 -
java常量池
JDK1.7 及之后版本的 JVM 已经将运行时常量池从方法区中移了出来,在 Java 堆(Heap)中开辟了一块区域存放运行时常量池。JDK1.8开始,取消了Java方法区,取而代之的是位于直接内存的元空间(metaSpace)。已知:String A="abc";String B="abc";String C=new String("abc");String D=new String("abc");比较A==B是否相等?比较C==D是否相等?分析:我们知道基本数据类型(int,byt转载 2020-09-19 17:58:48 · 84 阅读 · 0 评论 -
内存屏障
内存屏障(Memory barrier)为什么会有内存屏障每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的不同线程对同一个变量的缓存值不同。 用volatile关键字修饰变量可以解决上述问题,那么volatile是如何做到这一点的呢?那就是内存屏障,内存屏障是硬件层的概念,不同的硬件平台实现内存屏障的手段并不是一样,java通过屏蔽这些差异,统一由jvm来生成内存屏障转载 2020-07-30 12:09:39 · 252 阅读 · 0 评论 -
ACC_SUPER简介
class文件中的access flag记录了一个类的相关信息,比如public abstract final等等。其中有一个值ACC_SUPER。现理解如下:ACC_SUPER是用来表示如何调用父类的方法。在jdk1.1之前,jvm使用一种invokenonvirtual的指令,调用父类方法。这个方法就是现在的invokespecial 前身。既然连名字都改过了,他们的实现差距可以认为已经比较...转载 2020-04-27 12:19:35 · 1525 阅读 · 0 评论 -
Java JVM启动参数
摘要已经使用了一段时间的Java,期间也了解和用过一些JVM(Java Virtual Machine)参数,但是没有仔细去整理过每个参数代表的意义,为此整理成文。Java使用方式java [options] classname [args]java [options] -jar filename [args]options: 命令行选项,空格分隔classname: 启动的...转载 2020-04-10 11:58:48 · 245 阅读 · 0 评论 -
元空间 GC
jdk8移除了PermGen,取而代之的是MetaSpace元空间(Metaspace):一种新的内存空间的诞生。JDK8 HotSpot JVM 使用本地内存来存储类元数据信息并称之为:元空间(Metaspace);这与Oracle JRockit 和IBM JVM’s很相似。这将是一个好消息:意味着不会再有java.lang.OutOfMemoryError: PermGen问题,也不再需...转载 2020-03-22 09:21:17 · 2758 阅读 · 0 评论 -
tomcat的类加载器
一、tomcat是个web容器,要解决以下问题1. 一个web容器可能要部署两个或者多个应用程序,不同的应用程序,可能会依赖同一个第三方类库的不同版本,因此要保证每一个应用程序的类库都是独立、相互隔离的。2. 部署在同一个web容器中的相同类库的相同版本可以共享,否则,会有重复的类库被加载进JVM3. web容器也有自己的类库,不能和应用程序的类库混淆,需要相互隔离4. web容器...转载 2020-03-21 23:06:12 · 341 阅读 · 0 评论