author | stefank |
Fri, 13 Feb 2015 14:37:35 +0100 | |
changeset 29081 | c61eb4914428 |
parent 22234 | da823d78ad65 |
permissions | -rw-r--r-- |
1 | 1 |
/* |
22234
da823d78ad65
8029233: Update copyright year to match last edit in jdk8 hotspot repository for 2013
mikael
parents:
20001
diff
changeset
|
2 |
* Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. |
1 | 3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 |
* |
|
5 |
* This code is free software; you can redistribute it and/or modify it |
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
|
7 |
* published by the Free Software Foundation. |
|
8 |
* |
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
13 |
* accompanied this code). |
|
14 |
* |
|
15 |
* You should have received a copy of the GNU General Public License version |
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
18 |
* |
|
5547
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
f4b087cbb361
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
1
diff
changeset
|
21 |
* questions. |
1 | 22 |
* |
23 |
*/ |
|
24 |
||
7397 | 25 |
#ifndef SHARE_VM_SERVICES_MEMORYUSAGE_HPP |
26 |
#define SHARE_VM_SERVICES_MEMORYUSAGE_HPP |
|
27 |
||
28 |
#include "utilities/globalDefinitions.hpp" |
|
29 |
||
1 | 30 |
// A memory usage contains the following attributes about memory usage: |
31 |
// initSize - represents the initial amount of memory (in bytes) that |
|
32 |
// the Java virtual machine requests from the operating system |
|
33 |
// for memory management. The Java virtual machine may request |
|
34 |
// additional memory from the operating system later when appropriate. |
|
35 |
// Its value may be undefined. |
|
36 |
// used - represents the amount of memory currently used (in bytes). |
|
37 |
// committed - represents the amount of memory (in bytes) that is |
|
38 |
// guaranteed to be available for use by the Java virtual machine. |
|
39 |
// The amount of committed memory may change over time (increase |
|
40 |
// or decrease). It is guaranteed to be greater than or equal |
|
41 |
// to initSize. |
|
42 |
// maxSize - represents the maximum amount of memory (in bytes) |
|
43 |
// that can be used for memory management. The maximum amount of |
|
44 |
// memory for memory management could be less than the amount of |
|
45 |
// committed memory. Its value may be undefined. |
|
46 |
||
47 |
class MemoryUsage VALUE_OBJ_CLASS_SPEC { |
|
48 |
private: |
|
49 |
size_t _initSize; |
|
50 |
size_t _used; |
|
51 |
size_t _committed; |
|
52 |
size_t _maxSize; |
|
53 |
||
54 |
public: |
|
55 |
// Constructors |
|
56 |
MemoryUsage(size_t i, size_t u, size_t c, size_t m) : |
|
57 |
_initSize(i), _used(u), _committed(c), _maxSize(m) {}; |
|
58 |
MemoryUsage() : |
|
59 |
_initSize(0), _used(0), _committed(0), _maxSize(0) {}; |
|
60 |
||
61 |
size_t init_size() const { return _initSize; } |
|
62 |
size_t used() const { return _used; } |
|
63 |
size_t committed() const { return _committed; } |
|
64 |
size_t max_size() const { return _maxSize; } |
|
65 |
||
20001
7446501f55bc
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
7397
diff
changeset
|
66 |
static size_t undefined_size() { return (size_t) -1; } |
7446501f55bc
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
7397
diff
changeset
|
67 |
|
1 | 68 |
inline static jlong convert_to_jlong(size_t val) { |
69 |
// In the 64-bit vm, a size_t can overflow a jlong (which is signed). |
|
70 |
jlong ret; |
|
20001
7446501f55bc
8024718: Metaspace performance counters and memory pools should report the same data
ehelin
parents:
7397
diff
changeset
|
71 |
if (val == undefined_size()) { |
1 | 72 |
ret = -1L; |
73 |
} else { |
|
74 |
NOT_LP64(ret = val;) |
|
75 |
LP64_ONLY(ret = MIN2(val, (size_t)max_jlong);) |
|
76 |
} |
|
77 |
return ret; |
|
78 |
} |
|
79 |
||
80 |
jlong init_size_as_jlong() const { return convert_to_jlong(_initSize); } |
|
81 |
jlong used_as_jlong() const { return convert_to_jlong(_used); } |
|
82 |
jlong committed_as_jlong() const { return convert_to_jlong(_committed); } |
|
83 |
jlong max_size_as_jlong() const { return convert_to_jlong(_maxSize); } |
|
84 |
}; |
|
7397 | 85 |
|
86 |
#endif // SHARE_VM_SERVICES_MEMORYUSAGE_HPP |