首页 > 编程语言 > 详细

java分析工具10:jvm测试与调优

时间:2021-07-02 19:49:25      阅读:21      评论:0      收藏:0      [点我收藏+]

简介

jvm内存分为堆内存和栈内存这两块,堆内存用来存放对象等资源,栈内存用来存放线程和当前线程拥有的变量资源。

 

jvm内存调优

实验题目:堆内存调优

实验环境:

-Xms20m -Xmx20m
堆的最小值参数:-Xms20m
堆的最大值参数:-Xmx20m

实验步骤:

1.设置堆内存的最大值和最小值都为20m,编写堆内存溢出代码

import java.util.ArrayList;
import java.util.List;
?
public class HeapOutOfMemoryError {
    public static void main(String[] args) {
        List<HeapOutOfMemoryError> list = new ArrayList<>();
        while(true){
            list.add(new HeapOutOfMemoryError());
        }
    }
}

2.当控制台输出 Java heap space表示堆内存溢出,我们只需将堆内存设置得足够大即可

# 输出
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:3210)
    at java.util.Arrays.copyOf(Arrays.java:3181)
    at java.util.ArrayList.grow(ArrayList.java:267)
    at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:241)
    at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:233)
    at java.util.ArrayList.add(ArrayList.java:464)
    at jvm.HeapOutOfMemoryError.main(HeapOutOfMemoryError.java:9)

 

 

实验题目:栈内存调优

实验环境:

-Xss2m
堆内存参数:-Xss2m

实验步骤:

1.设置堆内存参数为2m,编写栈内存溢出代码

public class JavaVMStackOverFlowError {
    private int stackLength = 1;
    public void stackLeak(){
        stackLength++;
        stackLeak();
    }
    public static void main(String[] args){
        JavaVMStackOverFlowError sof = new JavaVMStackOverFlowError();
        try{
            sof.stackLeak();
        }catch(Throwable e){
            System.out.println("stackLength: "+sof.stackLength);
            throw e;
        }
    }
}

2.当控制台输出 StackOverflowError表示栈内存溢出,我们只需将栈内存设置得足够大即可

# 输出
stackLength: 20701
Exception in thread "main" java.lang.StackOverflowError
    at jvm.JavaVMStackOverFlowError.stackLeak(JavaVMStackOverFlowError.java:7)
    at jvm.JavaVMStackOverFlowError.stackLeak(JavaVMStackOverFlowError.java:7)
    at jvm.JavaVMStackOverFlowError.stackLeak(JavaVMStackOverFlowError.java:7)
    at jvm.JavaVMStackOverFlowError.stackLeak(JavaVMStackOverFlowError.java:7)
    at jvm.JavaVMStackOverFlowError.stackLeak(JavaVMStackOverFlowError.java:7)
    at jvm.JavaVMStackOverFlowError.stackLeak(JavaVMStackOverFlowError.java:7)
    at jvm.JavaVMStackOverFlowError.stackLeak(JavaVMStackOverFlowError.java:7)
    at jvm.JavaVMStackOverFlowError.stackLeak(JavaVMStackOverFlowError.java:7)
    at jvm.JavaVMStackOverFlowError.stackLeak(JavaVMStackOverFlowError.java:7)

 

 

 

java分析工具10:jvm测试与调优

原文:https://www.cnblogs.com/XueTing/p/14963851.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!