`

java stack size

    博客分类:
  • JAVA
阅读更多

摘录自 http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid=f621bd69b8b1a1425b9a88233de3?bug_id=4765019

 

 

the default stack size is 1 MB if not specified with -Xss and this result in calculation of _os_thread_limit be around 1800 (= (2GB - 200 MB ) / 1MB. After hit the limit, jvm code begins to try to reserve 20 MB first to see if there is enough virtual memory left, if not, "OutOfMemeory Error" thrown. The reserve only purpose for test, then released if reserve succeed. JVM create native Windows thread using the default stack size 0. Problem happens when on a MP machine with multiple thread creation that reserving 20 MB and commmiting stack space interlaced results in memory fragmented so finally, no single block is bigger enough than 20 MB even the total available virtual memory is far more than 20 MB.

 

 

With -Xss256K, the _os_thread_limit is about 7200. The question lands on the stack size used in calling _beginthreadex, since within the _os_thread_limit, reserve memory will not be invoked. Calling _beginthreadex even worse with specifying a stack commit size, even there is alot explaination of better not to specify stack size to create thread, a question still exists there like in attached example(C++): in this example, the stack size never grow out of 256K, but we still fail to create more threads, failed btw 1300-1700 with specifying 256K as stack size. Think it is a Microsoft bug.

 

 

Current solution is supply a XX flag(VM) upon turned on 0 as the argument passed to _beginthreadex as the commit stacksize, and meanwhile use -Xss256K to avoid triggering reserving 20 MB , and thread number can go up to 7000.

 

分享到:
评论

相关推荐

    java实现stack

    在Java编程语言中,Stack是一种基于数组的数据结构,它遵循后进先出(LIFO)的原则,即最后入栈的元素最先出栈。Stack接口位于java.util包下,提供了多种操作方法来支持栈的基本操作。本节将详细介绍如何使用Java...

    java数据结构 ArrayList、Stack、Map

    在Java编程语言中,数据结构是组织和存储数据的关键元素,它们提供了高效访问和操作数据的方式。本主题将深入探讨ArrayList、Stack和Map这三种重要数据结构,它们各自具有独特的特性和用途。 **ArrayList** 是Java...

    数据结构-栈(Stack)介绍和Java示例代码

    int size = stack.size(); System.out.println(size); ``` 在使用栈时,需要注意以下常见问题: 1. **空指针异常**:尝试从空栈中弹出或查看栈顶元素会导致`NullPointerException`,因此在执行这类操作前应检查栈...

    2021ProjectsAndAlgorithms:Java Stack P&A类的分配

    在IT行业中,栈(Stack)是一种非常基础且重要的数据结构,尤其在编程语言如Java和JavaScript中有着广泛的应用。本文将深入探讨2021ProjectsAndAlgorithms项目中关于Java Stack P&A类的分配,以及如何在JavaScript中...

    java实现顺序栈

    return stack.remove(stack.size() - 1); } ``` 4. **查看栈顶元素(peek或top)** 查看栈顶元素不移除它,只返回栈顶元素的引用。 ```java public Object peek() { if (isEmpty()) { throw new ...

    java-leetcode面试题解Stack之第1111题有效括号的嵌套深度-题解.zip

    maxDepth = Math.max(maxDepth, stack.size()); } } return stack.isEmpty() ? maxDepth : -1; // 检查是否有未匹配的开括号 } private boolean isValidMatch(char open, char close) { return (open == ...

    android ndk-stack使用说明。

    尤其是对于C/C++代码的调试,由于涉及到本地代码与Java层之间的交互,使得调试过程变得更为复杂。为了解决这一难题,`ndk-stack`工具应运而生。通过本文档,我们将详细介绍如何使用`ndk-stack`工具来进行调试,帮助...

    java-leetcode面试题解Stack之第150题逆波兰表达式求值-题解.zip

    本题是LeetCode中的第150题,主要考察Java程序员对栈(Stack)数据结构的理解以及其在解决实际问题中的应用。LeetCode作为程序员面试的热门平台,此类题目对于准备求职面试的开发者来说至关重要。 首先,我们需要...

    Stack_Test_in_java.zip_DEMO

    在这个名为“Stack_Test_in_java.zip_DEMO”的压缩包中,包含了一个Java实现的栈的示例代码——StackTest.java。这个DEMO旨在帮助初学者理解如何在Java中使用栈,并提供了一个基于数组实现的简单栈模型。 首先,栈...

    深入java虚拟机(inside the java virtual machine)

    Possible Implementations of the Java Stack Native Method Stacks Execution Engine The Instruction Set Execution Techniques Threads Native Method Interface The Real Machine Eternal Math: A ...

    深入分析JAVA Vector和Stack的具体用法

    深入分析JAVA Vector和Stack的具体用法 JAVA 中的 Vector 和 Stack 是两个重要的数据结构, Vector 是一个线程安全的动态数组,而 Stack 是一个继承自 Vector 的栈结构。本文将对 Vector 和 Stack 进行深入分析,...

    java-leetcode面试题解Stack之第341题扁平化嵌套列表迭代器-题解.zip

    for (int i = sublist.size() - 1; i >= 0; i--) { valueStack.push(sublist.get(i)); } } } return false; } } ``` 在这个解决方案中,`NestedInteger`是一个自定义的类,它可以代表一个整数或一个嵌套列表...

    JavaVM运作原理

    - **Java栈(Java Stack)**:用于存储局部变量和线程状态。 - **Java堆(Java Heap)**:存放对象实例和数组。 - **本地方法栈(Native Method Stack)**:支持本地方法调用。 3. **自动内存管理器(Automatic Memory ...

    map set stack

    在IT行业中,`Map`、`Set`和`Stack`是Java编程语言中非常基础且重要的数据结构。它们属于Java集合框架的一部分,为开发者提供了高效的数据存储和操作能力。接下来,我们将深入探讨这三个核心概念以及它们在实际开发...

    链式栈的实现(java)

    System.out.println("Stack size: " + stack.size()); // 输出:3 System.out.println("Top element: " + stack.peek()); // 输出:3 while (!stack.isEmpty()) { System.out.println("Popped: " + stack.pop()...

    Stack检测括号匹配.zip

    本教程将深入讲解如何利用Java中的Stack类来实现括号匹配算法。 首先,我们要理解栈的基本概念。栈是一种后进先出(LIFO)的数据结构,类似于图书馆的书架,新放上去的书籍(元素)只能最后取走。在Java中,`java....

    ( Go for Java programmers(面向java开发者的go编程) 中文

    func (s *Stack) Size() int { return len(s.data) } ``` 在这个示例中,我们可以看到几个重要的Go语言特性: - **结构体(struct)**:类似于Java中的类,但不包含方法,只包含字段。 - **接口(interface)**:`...

    Java中Vector类和Stack类的学习

    Java中的`Vector`类和`Stack`类是Java集合框架早期的重要组成部分,它们在多线程环境下提供了线程安全的数据存储。这两个类都在`java.util`包中。 **1. Vector类** `Vector`类是一个动态数组,它允许在运行时动态...

    栈的Java语言实现

    stack = new String[MAX_SIZE]; top1 = -1; top2 = MAX_SIZE; } ``` ##### 3. 方法介绍 - **push()**:入栈操作。 ```java public boolean push(int stackNum, String pusher){ if(top1+1==top2){ return ...

    java堆栈详解 PDF 下载

    - 栈内存不足则抛出`OutOfMemoryError: Stack Size`异常。 了解这些基础知识对于优化Java应用程序性能至关重要。合理地分配和管理内存,可以避免内存泄漏,提高程序运行效率。同时,理解堆栈的工作机制也有助于...

Global site tag (gtag.js) - Google Analytics