![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 58
Java邦邦
这个作者很懒,什么都没留下…
展开
-
jvm老年代调优
也就是他的垃圾回收线程,在工作的同时,其他的用户现场也能够并发的执行。那如果是这个浮动垃圾产生了,又导致你这个内存不足,这时候事儿就大了,就会造成你的这个CMS并发失败,并发失败了的话,你的CMS垃圾回收器就不能正常工作,它就会退化为serial old串行的老年代的垃圾回收器,这个效率就特别低了,一下子就会stop the world,导致你的这个响应时间变得特别长。所以我们在给这个老年代的规划内存的时候,就可能需要把它规划的更大一些,越大越好,这样呢就是为了预留更多的空间,避免浮动垃圾引起的并发失败。原创 2023-07-10 23:53:28 · 937 阅读 · 1 评论 -
jvm新生代调优
举一个例子,比如说我一次请求响应的过程中呢,可能会创建很多新的对象,那这些新的对象加起来大约呢,比如说占到了512K的内存,那这是我的并发量呢,大概是1000。为什么这么说呢,因为如果你是一个长时间存活的对象,你把它留在幸存区里,只能够浪费我们幸存区的这个内存,并且呢,因为我们的新生代垃圾回收都是复制算法,要把这个幸存区中的这些对象,下次存活了又要把它进行复制复制,从from复制到to,我们前面也说过,那么这个新生代复制算法主要的耗费时间就是在这个对象的复制上,如果有大量的这些长时间存活的对象,他们。原创 2023-07-10 22:53:26 · 739 阅读 · 0 评论 -
并发与并行区别
并发,指的是多个事情,在同一时间段内同时发生了。并行,指的是多个事情,在同一时间点上同时发生了。并发是指在一段时间内宏观上多个程序同时运行。并行指的是同一个时刻,多个任务确实真的在同时运行。只有在多CPU的情况中,才会发生并行。否则,看似同时发生的事情,其实都是并发执行的。并发的多个任务之间是互相抢占资源的。并行的多个任务之间是不互相抢占资源的、原创 2023-06-28 09:00:11 · 108 阅读 · 0 评论 -
Mac下载安装Memory Analyzer Tool(MAT)
按照如下步骤修改配置:右键mat--显示包内容--修改info.lpist文件配置;info.lpist文件中新增以下两行,复制workspace的路径配置到文件中;原创 2023-06-22 01:58:11 · 2193 阅读 · 0 评论 -
Maven 编译打包 报java:[5,38] 程序包jdk.internal.org.objectweb.asm不存在
也就是说:“sun.*”包并不是API公开接口的一部分,调用“sun”包的程序并不能确保工作在所有Java平台上,事实上,这样的程序并不能工作在今后的Java平台上。[ERROR] /Users/apple/Desktop/files/007-project/002_jvm/src/main/java/com/cjb/c_methodarea/AOutOfMemory.java:[5,38] 程序包jdk.internal.org.objectweb.asm不存在。(lib/ct.sym),这个。原创 2023-06-19 06:47:48 · 1564 阅读 · 0 评论 -
Java中main方法是啥?args又是啥
1)在main()方法中,我们可以直接调用main方法所在类的静态方法或静态属性。2)但是,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,举例说明3)代码//静态的变量属性韩顺平教育//非静态的变量属性//静态方法的hi方法");第389页//非静态方法的cry方法");//可以直接使用name//1.静态方法main可以访问本类的静态成员hi();//2.原创 2023-06-15 04:30:11 · 79 阅读 · 0 评论 -
静态代码块什么时候执行?类加载什么时候执行?
类加载的原则:延迟加载,能不加载就不加载。静态代码块什么时候执行?类加载什么时候执行?原创 2023-06-13 23:57:13 · 150 阅读 · 0 评论 -
System.out.println中out为null,println究竟怎样执行的呢
如果System.out是null的话,最后肯定是没法调用PrintStream非静态方法的,而且out是public static final修饰,在赋值null后是没法修改和赋值的,所以out肯定是在哪里有设置。不知道你是否有了解过Java里native标识符修饰的方法,native修饰的方法说明方法实现部分不在当前文件在,而是调用C++的动态链接库,因为Java的底层使用C++编写的,所以在底层与系统硬件打交道时,虚拟机JVM通过C++的动态链接库来实现和操作系统的交互。原创 2023-06-13 23:33:47 · 274 阅读 · 0 评论 -
jvm内存结构-程序计数器、虚拟机栈、本地方法栈、堆、方法区、直接内存
程序计数器中获取地址,根据地址获取指令,拿到一条指令交给解释器,解释器解释成机器码,机器码交给cpu执行,程序计数。:jvm跨平台的基础就是jvm指令,对所有平台(win,mac,linux)一致。3)是CPU里读取速度最快的单元,读写指令地址非常频繁,所以jvm在设计时。2)程序计数器是Java对物理硬件的屏蔽和抽象。如果时间片内线程1未执行完,线程1状态会暂存。线程2时间片用完,切换到线程1,执行剩余代码。假设线程1执行到9,程序计数器记录10。程序计数器记录下一条执行指令。程序计数器(寄存器)原创 2023-06-07 23:50:23 · 160 阅读 · 0 评论 -
jvm引言
因此会出现变量 i 的值会被循环过程中越界访问的arr[7]的值所覆盖,arr[7]赋值为0后, i 的值也会被赋值为0,导致出现死循环的现象。如果for循环中改成对6个或者7个数组的单位内存空间进行赋值,但是并没有对变量i的值进行覆盖,也就是说访问越界但没有覆盖到其他变量的情况,代码会出现访问空间越界的报错而不是死循环。本代码是在VS2019上进行编译的,本文中是两个内存空间。局部变量保存在栈区中,arr[5]与arr[6]是两个局部变量之间没有利用到的空间,不进行任何赋值操作的情况下存放的是随机值。原创 2023-06-07 01:47:27 · 100 阅读 · 0 评论